我希望使用 ES6、react、react-redux 和您的 js-buy-sdk api 构建一个电子商务 Web 应用程序。我的问题是,从shopify获取所有产品并将它们放入商店后,我似乎没有像我预期的那样拥有有关产品的所有数据,而只有: { attrs, shopClient, serializer, type, config, _memoized }
.
以下是我在名为 shopify.js
的文件下调用获取产品的方法:
import ShopifyBuy from 'shopify-buy';
const shopClient = ShopifyBuy.buildClient({
apiKey: 'xxxxxxxxxxxxxxxxxxxx1403c107adc7e',
domain: 'xxxxxxxxxxxxxxxx.myshopify.com',
appId: '6',
});
export function fetchAllProducts() {
return new Promise((resolve, reject) => {
shopClient.fetchAllProducts()
.then((data) => {
console.log('shopClient.fetchAllProducts', data);
resolve(data);
}).catch((error) => {
console.error(new Error('Fetching products error!'));
reject(error);
});
});
}
查看 console.log shopClient.fetchAllProducts
这是我得到的:
我将data
放入redux存储中,当我查看它时,它看起来像这样:
如果相关,请检查this gist查看我正在调度的操作和 this gist我的行为被减少并被放置在商店中。
根据我的理解,当您执行 fetchAllProducts()
方法时,您会得到一个 ProductModel
数组,因此,我想在我的商店中设置了以下 { attrs, shopClient, serializer, type, config, _memoized }
因为这是 ProductModel
内部存储的内容。
我的问题是,有没有办法从 ProductModel
获取原始数据对象(包含第一个屏幕截图中显示的所有相关产品值以及来自模型的数据,例如 ProductModel
所依赖的 ProductOptionModel
),这样我就可以出于稳定性和理智的原因放置我的商店?
Shopify API 引用可以找到 here .
最佳答案
如果您正在寻求对产品返回的数据的原始访问,attrs
属性包含 API 响应 JSON,无需其他逻辑或模型。
但是,如果可能的话,我建议您以可以利用这些模型的方式组织您的代码 - 我们添加它们是因为原始数据可能采用特别令人困惑的格式(特别是变体、选项、图像)。
也就是说,如果您想要返回所有产品的原始数据,类似这样的事情应该可以解决问题。
import ShopifyBuy from 'shopify-buy';
const shopClient = ShopifyBuy.buildClient({
apiKey: 'xxxxxxxxxxxxxxxxxxxx1403c107adc7e',
domain: 'xxxxxxxxxxxxxxxx.myshopify.com',
appId: '6',
});
export function fetchAllProducts() {
return new Promise((resolve, reject) => {
shopClient.fetchAllProducts()
.then((products) => {
resolve(products.map((product) => {
return product.attrs;
}));
}).catch((error) => {
console.error(new Error('Fetching products error!'));
reject(error);
});
});
}
关于javascript - Shopify-Buy-SDK 获取原始产品数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41780204/