Я новичок в GraphQL. Как написать мутацию удаления для удаления нескольких элементов (более одного ID) в GraphQL? Я использую scaphold.io.Как удалить несколько элементов с помощью GraphQL?
ответ
Вы можете выполнить несколько мутаций в том же запросе на сервере GraphQL, используя GraphQL aliases.
Скажем так, как вы удалите один пункт:
mutation deleteOne {
deleteItem(id: "id1") {
id
}
}
Тогда это, как вы можете удалить несколько элементов в одном запросе:
mutation deleteMultiple {
id1: deleteItem(id: "id1") {
id
}
id2: deleteItem(id: "id2") {
id
}
# ... and so on
id100: deleteItem(id: "id100") {
id
}
}
Это полезно знать, что множественные мутации в один запрос запускается последовательно в указанном порядке (сверху вниз). Вы также можете запускать несколько запросов в одном запросе одинаково, и несколько запросов в одном запросе запускаются в parellel.
Если вы хотите запустить сказать 1000 мутаций, что может быть лучше к партии их в 10 групп 100.
Больше информации и еще один пример можно найти в этом FAQ article, а также официального GraphQL docs.
Я думаю, что хорошим решением было бы создать метод (мутацию), который принимает массив, например. Идентификаторы, которые далее используются для пакетного удаления нескольких записей из базы данных.
mutation deleteUsers($userIds: [Int!]!) {
deleteUsers(userIds: $userIds) {
...
}
}
Затем в распознаватель можно использовать параметр userIds
для выполнения запроса SQL, как DELETE FROM users WHERE id IN userIds
, где userIds
конечно, должны быть правильно заменить (сбежавшего), в зависимости от того, как взаимодействовать с базой данных.