Возможность получения нескольких метаполей через GraphQL в Shopify

Я создал несколько метаполей для сообщений в блоге и заполнил их. Я создаю витрину магазина Hydrogen Shopify и использую GraphQL для получения данных из этого блога/статьи. Но я не могу понять, как получить все метаполя. Похоже, что «метаполе» и «метаполя» возвращают только одно поле на основе ключа и пространства имен. Есть ли способ сделать больше одного?

query Blog($language: LanguageCode, $blogHandle: String!, $first: Int, $last: Int, $startCursor: String, $endCursor: String) @inContext(language: $language) {
  blog(handle: $blogHandle) {
    title
    seo {
      title
      description
    }
    articles(
      first: $first
      last: $last
      before: $startCursor
      after: $endCursor
      reverse: true
    ) {
      nodes {
        ...ArticleItem
        metafields(identifiers: {namespace: "custom", key: "misc_content_long_text_1"}) {
          value
          references {
            edges {
              node
            }
          }
        }
      }
      pageInfo {
        hasPreviousPage
        hasNextPage
        hasNextPage
        endCursor
        startCursor
      }
    }
  }
}

fragment ArticleItem on Article {
  author: authorV2 {
    name
  }
  contentHtml
  handle
  id
  image {
    id
    altText
    url
    width
    height
  }
  publishedAt
  title
  blog {
    handle
  }
}

Мои метаполя включают в себя:

  • misc_content_long_text_1
  • misc_content_long_text_2
  • misc_content_long_text_3
  • misc_text_field_1
  • misc_text_field_2
  • misc_text_field_3
  • misc_text_field_4
  • misc_text_field_5

Я надеюсь, что мне не придется вызывать несколько запросов для их получения. ТИА


188
1

Ответ:

Решено

Вы можете добиться этого, используя псевдонимы метаполей. Вот официальные документы https://www.shopify.com/in/partners/blog/how-to-use-graphql-aliases

query Blog($language: LanguageCode, $blogHandle: String!, $first: Int, $last: Int, $startCursor: String, $endCursor: String) @inContext(language: $language) {
  blog(handle: $blogHandle) {
    title
    seo {
      title
      description
    }
    articles(
      first: $first
      last: $last
      before: $startCursor
      after: $endCursor
      reverse: true
    ) {
      nodes {
        ...ArticleItem
        misc_content_long_text_1 : metafields(identifiers: {namespace: "custom", key: "misc_content_long_text_1"}) {
          value
          references {
            edges {
              node
            }
          }
        },
misc_text_field_2: metafields(identifiers: {namespace: "custom", key: "misc_text_field_2"}) {
          value
          references {
            edges {
              node
            }
          }
        }
      }
      pageInfo {
        hasPreviousPage
        hasNextPage
        hasNextPage
        endCursor
        startCursor
      }
    }
  }
}

fragment ArticleItem on Article {
  author: authorV2 {
    name
  }
  contentHtml
  handle
  id
  image {
    id
    altText
    url
    width
    height
  }
  publishedAt
  title
  blog {
    handle
  }
}