2017-02-09 7 views

ответ

7

Вы можете выполнить несколько мутаций в том же запросе на сервере 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.

0

Я думаю, что хорошим решением было бы создать метод (мутацию), который принимает массив, например. Идентификаторы, которые далее используются для пакетного удаления нескольких записей из базы данных.

mutation deleteUsers($userIds: [Int!]!) { 
    deleteUsers(userIds: $userIds) { 
    ... 
    } 
} 

Затем в распознаватель можно использовать параметр userIds для выполнения запроса SQL, как DELETE FROM users WHERE id IN userIds, где userIds конечно, должны быть правильно заменить (сбежавшего), в зависимости от того, как взаимодействовать с базой данных.