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

avatar
James Heston
23 января 2019 в 21:02
455
2
5

Я использую SDK shopify-buy, чтобы попытаться получить статьи из моего магазина 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 витрины.

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

Источник
Taki
31 января 2019 в 14:51
0

Вы можете добавить вывод console.log(data)?

RegarBoy
2 февраля 2019 в 13:07
0

вы пробовали img? если возвращается значение null, либо в статьях нет изображения, либо имя свойства, к которому вы пытаетесь получить доступ, не существует. Вы нашли где-нибудь правильное ключевое слово для извлечения изображений или добавляли image в свою статью, это была ваша идея?

Ответы (2)

avatar
James Heston
14 февраля 2019 в 01:39
1

Спасибо Ребекке Фридман в разделе проблем 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 является собственным объектом, вам необходимо добавить функцию обратного вызова, чтобы указать нужные вам поля.

avatar
RegarBoy
2 февраля 2019 в 13:14
1

Попробуйте следующее:

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

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