Порядок операций мутации в GraphQL - PullRequest
0 голосов
/ 17 июня 2020

Я создаю мутацию, которая работает, но я не уверен, работает ли она так, как я думаю. Однако я хотел бы знать, каков порядок выполнения?

  • Asyn c
  • Syn c Top to Bottom
  • Syn c случайный порядок
  • Что-то еще

Я хочу убедиться, что определенные элементы удалены из таблицы до выполнения вставки / вставки. Используя следующую строку запроса на мутацию, всегда ли это будет делать то, что я хочу, или время от времени не будет работать, потому что я предполагаю, что это синхронно, но на самом деле это асинхронно?

mutation MyMutation(...) {
  update_my_table_1(...) { }

  delete_my_table_2(...) { }

  insert_my_table_2(...) { }
}

1 Ответ

1 голос
/ 17 июня 2020

Из spe c:

Если операция представляет собой мутацию, результат операции является результатом выполнения выбора верхнего уровня мутации, установленного на мутация root тип объекта. Этот набор выбора должен выполняться последовательно.

Ожидается, что поля верхнего уровня в операции мутации оказывают побочное действие на базовую систему данных. Последовательное выполнение предоставленных мутаций обеспечивает защиту от состояний гонки во время этих побочных эффектов.

Поля с типом мутации root всегда разрешаются последовательно. Поля порядка любого типа другого (например, типа запроса root или любых «вложенных» типов) оставлены до реализации , хотя в большинстве, если не во всех, реализациях означает, что поля разрешаются параллельно.

Таким образом, в приведенном выше примере insert_my_table_2 не будет выполняться, пока delete_my_table_2 не будет, а delete_my_table_2 не будет выполняться, пока update_my_table_1 не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...