1 minute read

💡 [Устарело | 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”, значением которого является массив, определенный выше.