Shopify-Buy-SDK获取原始产品数据

时间:2017-01-21 13:57:34

标签: javascript reactjs shopify react-redux

我希望使用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这是我得到的: chrome console

我拿data并将它放在redux商店中,当我看到它时,它看起来像这样: redux store

如果相关,请检查this gist以查看我发送的操作以及this gist我的操作将减少并放入商店的位置。

根据我的理解,当你执行fetchAllProducts()方法时,会得到一个ProductModel的数组,因此,我想在我的商店中设置了以下{ attrs, shopClient, serializer, type, config, _memoized },因为这就是{ {1}}在内部存储。

我的问题是,有没有办法从ProductModel获取数据的原始对象(包含第一个屏幕截图中显示的所有相关产品值以及来自ProductModel所依赖的模型,例如ProductOptionModel,所以为了稳定性和理智原因,我可以放置我的商店吗?

可以找到Shopify API参考here

2 个答案:

答案 0 :(得分:2)

如果您正在寻找对产品上返回的数据的原始访问权限,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);
      });
  });
}

答案 1 :(得分:0)

在您的示例代码中,您使用秘密API密钥调用API?您是否明白这会使您的商店暴露于您可能不想要的滥用权利?你确定你知道你在那里做什么吗?