Примеры с отделением/вынесением переменных из GraphQL-запросов
💡 [Устарело | 12.0.0] Метод query устарел и был заменен методом request.
См. руководство по миграции: https://github.com/Shopify/shopify-app-js/blob/main/packages/apps/shopify-api/docs/migrating-to-v9.md#using-the-new-clients.
У нас есть пример кода из metafieldsSet пример Node.js
Объект variables содержит массив metafields
const client = new shopify.clients.Graphql({ session });
const data = await client.query({
data: {
query: `mutation MetafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
key
namespace
value
createdAt
updatedAt
}
userErrors {
field
message
code
}
}
}`,
variables: {
metafields: [
{
key: "example_key",
namespace: "example_namespace",
ownerId: "gid://shopify/Product/20995642",
type: "single_line_text_field",
value: "Example Value",
},
],
},
},
});
Вынесение всего объекта variables
const variables = {
metafields: [
{
key: "example_key",
namespace: "example_namespace",
ownerId: "gid://shopify/Product/20995642",
type: "single_line_text_field",
value: "Example Value",
},
],
};
const client = new shopify.clients.Graphql({ session });
const data = await client.query({
data: {
query: `mutation MetafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
key
namespace
value
createdAt
updatedAt
}
userErrors {
field
message
code
}
}
}`,
variables, // Ссылка на вынесенный объект
},
});
Вынесение массива metafields И объекта variables
const metafields = [
{
key: "example_key",
namespace: "example_namespace",
ownerId: "gid://shopify/Product/20995642",
type: "single_line_text_field",
value: "Example Value",
},
];
const variables = { metafields };
const client = new shopify.clients.Graphql({ session });
const data = await client.query({
data: {
query: `mutation MetafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
key
namespace
value
createdAt
updatedAt
}
userErrors {
field
message
code
}
}
}`,
variables, // Ссылка на вынесенный объект variables
},
});
Вынесение только массива metafields
const metafields = [
{
key: "example_key",
namespace: "example_namespace",
ownerId: "gid://shopify/Product/20995642",
type: "single_line_text_field",
value: "Example Value",
},
];
const client = new shopify.clients.Graphql({ session });
const data = await client.query({
data: {
query: `mutation MetafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
metafields {
key
namespace
value
createdAt
updatedAt
}
userErrors {
field
message
code
}
}
}`,
variables: { metafields }, // Прямая ссылка на массив metafields
},
});
💡 { metafields } в данном случае является сокращением для { metafields: metafields }. Это создает объект с ключом “metafields”, значением которого является массив, определенный выше.