Получить объект статьи, включая его изображение, с помощью пользовательского запроса Shopify JavaScript Buy SDK - PullRequest
0 голосов
/ 24 января 2019

Я использую shopify-buy SDK, чтобы попытаться получить статьи из моего магазина Shopify, просто используя JavaScript на веб-интерфейсе, следуя указаниям «Расширение SDK»: https://shopify.github.io/js-buy-sdk/#expanding-the-sdk.

Используя приведенный ниже код, я могу получить свои статьи и некоторые полей, которые мне нужны.

// Build a custom query using the unoptimized version of the SDK
const articlesQuery = client.graphQLClient.query((root) => {
  root.addConnection('articles', {args: {first: 10}}, (article) => {
    article.add('title')
    article.add('handle')
    article.add('url')
    article.add('contentHtml')
  })
})

// Call the send method with the custom query
client.graphQLClient.send(articlesQuery).then(({model, data}) => {
  console.log('articles data')
  console.log(data)
})

Тем не менее, мне действительно нужно получить изображение для каждой статьи, и, к сожалению, когда я добавляю строку article.add('image') в мой articleQuery, результирующие данные статей регистрируются null. Я попытался создать пользовательский продукт productsQuery, и у него похожая проблема - я могу получить некоторые поля продукта, но когда я пытаюсь добавить строку product.add('images'), я просто получаю null из API витрины магазина.

Есть ли у кого-нибудь опыт создания пользовательских / расширенных запросов и успешного извлечения изображений?

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Благодаря Ребекке Фридман из раздела о проблемах github репозитория js-buy-sdk для предоставления этого рабочего решения:

const articlesQuery = client.graphQLClient.query((root) => {
  root.addConnection('articles', {args: {first: 10}}, (article) => {
    article.add('title')
    article.add('handle')
    article.add('url')
    article.add('contentHtml')
    article.addField('image', {}, (image) => {
      image.add('id')
      image.add('originalSrc')
    })
  })
})

// Call the send method with the custom query
client.graphQLClient.send(articlesQuery).then(({model, data}) => {
  console.log('articles data')
  console.log(data) // works!
})

Поскольку поле image является собственным объектом, у вас естьдобавить функцию обратного вызова, чтобы указать нужные поля.

0 голосов
/ 02 февраля 2019

Попробуйте выполнить следующее:

// Fetch all products in your shop
client.graphQLClient.fetchAll().then((acticles) => {
  console.log(acticles);
});

А затем проверьте в консоли, какие имена доступных свойств есть в ваших статьях.Если SDK позволяет получить какие-либо данные изображения, то наверняка должно быть что-то вроде imageSrc ||imageUrl ||img ......

...