ym88659208ym87991671
Мутации данных | Документация для разработчиков
Skip to main content

Мутации данных

Обновлено 13 октября 2022

В терминах GraphQL изменение данных называется мутацией.

Мутации данных выполняются в рамках пакета packet.

note

Список доступных мутаций можно найти в разделе MUTATIONS, справочника DOCS.

После вызова мутации следует указывать содержимое ответа.

mutation {
packet {
#Создание компании, предоставляющей подарки
createGiftVendor(input: {
name: "Sberdevices"
}){
#Ответ будет содержать идентификатор компании
id
}
}
}

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

mutation createVendor {
packet {
createGiftVendor(input: {
name: "MyVendor"
}){
id
}
}
}

С более подробным описанием элемента "Мутация" схемы GraphQL можно ознакомиться в разделе Мутация статьи "Описание протокола GraphQL".

Создание нескольких сущностей

Внутри одной мутации можно передавать пакеты для изменения нескольких сущностей. В этом случае каждый пакет должен иметь уникальное название.

mutation createVendor {
p1: packet {
createGiftVendor(input: {
name: "MyVendor"
}){
id
}
}
p2: packet {
createGiftVendor(input: {
name: "AnotherVendor"
}){
id
}
}
}

Предотвращение дублирования

Чтобы избежать дублирования данных при повторных запросах, используйте ключ идемпотентности idempotencePacketId.

mutation createGift {
#Уникальность подарка опредляется по его серийному номеру
p1:packet(idempotencePacketId:"123456") {
createGift(input:{
kind: TSHIRT
vendor: 6966642249338191873
serialNumber: "123456"
}){id}
}
}

Если подарок с заданным серийным номером уже существует в базе, в результате повторного выполнения запроса сервис вернет идентификатор подарка.

Оптимистические блокировки

Для использования оптимистической блокировки записей используйте параметр aggregateVersion.

mutation updateRequest {
packet(aggregateVersion:1){
updateGiftRequestCounter(input:{
id: 6967338499520528385
counter:1
lastRequest:"2021-05-09T20:20:00.000"
}) {
counter
lastRequest
}
}
}

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней