Перейти к основному содержимому

Создание GraphQL-запроса типа mutation

GraphQL-запрос типа mutation позволяет добавлять, удалять или изменять данные. Входные данные GraphQL-запроса типа mutation зависят от типа выполняемого действия и могут быть следующими:

  • Добавление: значения атрибутов нового объекта.
  • Изменение: новые значения атрибутов и условие изменения. Если изменяется один объект, условие where содержит идентификатор объекта. Если изменяется множество объектов, условие содержит выражение для выборки этих объектов.
  • Удаление: условие удаления.

Следующая инструкция рассматривает создать GraphQL-запрос типа mutation на примере изменения имени проекта в приложении по управления проектами.

Чтобы создать GraphQL-запрос типа mutation для изменения данных:

  1. Введите ключевое слово mutation и укажите имя GraphQL-запроса, например, updateProjectById.

  2. В круглых скобках укажите входные параметры:

    • идентификатор проекта $targetId: Int;
    • новое имя проекта, например, $newName:String.
  3. Введите или выберите из списка предлагаемых вариантов GraphQL-тип, соответствующий действию по изменению данных, например, update_projectsanddocs_project.

  4. В круглых скобках после ключевого слова where укажите условие, используя имя переменной для идентификатора проекта.

  5. Из списка выберите GraphQL-тип входных данных projectsanddocs_project, и в фигурных скобках укажите переменную из списка входных параметров.

  6. Для формирования блока выходных данных в фигурных скобках укажите элемент countObjectsModified, который возвращает количество измененных объектов.

Следующий пример демонстрирует GraphQL-запрос типа mutation для изменения имени определенного проекта.

mutation updateProjectById($targetId: Int, $newName:String) {
update_projectsanddocs_project(
where: {Id: {eq:$targetId}},
projectsanddocs_project: {
name: $newName
}
)
{
countObjectsModified
}
}

GraphQL-запрос типа mutation для добавления данных аналогичен GraphQL-запросу типа mutation для изменения данных, но не содержит условия.

Следующий пример демонстрирует GraphQL-запрос типа mutation для добавления нового объекта. Блок входных данных представлен именами и типами переменных. В основном блоке GraphQL-запроса перечислены атрибуты и входные переменные.

mutation Projects($name: String, $customer: String, $phase: ProjectsAndDocs_Phase, $manager: String, $status: ProjectsAndDocs_Statuses) {
add_projectsanddocs_project(
projectsanddocs_project: {
name: $name,
customer: $customer,
phase: $phase,
manager: $manager,
status: $status
}
) {
insertedId
}
}

GraphQL-запрос типа mutation для удаления данных содержит условие, а блок со значениями атрибутов отсутствует.

Следующий пример демонстрирует GraphQL-запрос типа mutation для удаления объекта.

mutation deleteProjectById($targetId: Int) {
delete_projectsanddocs_project(where: {Id: {eq:$targetId}})
{
countObjectsModified
}
}