Получить объект статьи, включая его изображение, с помощью пользовательского запроса Shopify JavaScript Buy SDK
Я использую shopify-buy SDK, чтобы попытаться получить статьи из моего магазина Shopify, просто используя JavaScript на веб-интерфейсе, следуя указаниям "Расширение SDK" здесь: https://shopify.github.io/js-buy-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 ответа
Спасибо Ребекке Фридман (Rebecca Friedman) в разделе проблем 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!
})
Поскольку поле изображения является собственным объектом, вам нужно добавить функцию обратного вызова, чтобы указать нужные поля.
Попробуйте следующее:
// Fetch all products in your shop
client.graphQLClient.fetchAll().then((acticles) => {
console.log(acticles);
});
А затем проверьте в консоли, какие имена доступных свойств есть в ваших статьях. Если SDK позволяет вам получать какие-либо данные изображения, наверняка должно быть что-то вроде imageSrc
|| imageUrl
|| img
......