Мутации данных
В терминах 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
, чтобы сообщить нам о ней