Berinteraksi dengan API GraphQLMenjalankan bulk mutations
Menjalankan bulk mutations
Gato GraphQL menyediakan field-field mutasi "bulk" untuk semua mutasi dalam skema, yang memungkinkan kita memutasi banyak sumber daya sekaligus.
Misalnya, mutasi createPosts (mutasi sumber daya tunggal adalah createPost) akan membuat beberapa post sekaligus:
mutation CreatePosts {
createPosts(inputs: [
{
title: "First post"
contentAs: {
html: "This is the content for the first post"
}
},
{
title: "Second post"
contentAs: {
html: "Here is another content, for another post"
}
excerpt: "The cup is within reach"
},
{
title: "Third post"
contentAs: {
html: "This is yet another piece of content"
},
authorBy: {
id: 1
},
status: draft
}
]) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
title
content
excerpt
author {
name
}
status
}
}
}Argumen
Semua bulk mutations menerima dua argumen:
inputs(wajib): Array item input, di mana setiap item berisi data untuk memutasi satu sumber dayastopExecutingMutationItemsOnFirstError(defaultfalse): Menunjukkan apakah, jika salah satu input menghasilkan error, eksekusi mutasi pada input berikutnya harus dihentikan.
Semua mutasi dijalankan sesuai urutan yang diberikan dalam argumen inputs.
Kasus penggunaan
Bulk mutations membuka berbagai kemungkinan untuk mengelola situs WordPress kita.
Misalnya, query GraphQL berikut menggunakan createPosts untuk menduplikasi post:
query ExportPostData
{
postsToDuplicate: posts {
rawTitle
rawContent
rawExcerpt
postInput: _echo(value: {
title: $__rawTitle
contentAs: {
html: $__rawContent
},
excerpt: $__rawExcerpt
})
@export(as: "postInputs", type: LIST)
@remove
}
}
mutation CreatePosts
@depends(on: "ExportPostData")
{
createPosts(inputs: $postInputs) {
status
errors {
__typename
...on ErrorPayload {
message
}
}
post {
id
title
content
excerpt
}
}
}