【问题标题】:Shopify-Buy-SDK Get Raw Product DataShopify-Buy-SDK 获取原始产品数据
【发布时间】:2017-01-21 13:57:34
【问题描述】:

我希望使用 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() 方法时,您会得到一个ProductModels 数组,因此,我想在我的商店中设置了以下{ attrs, shopClient, serializer, type, config, _memoized },因为这是ProductModel 在内部存储的内容。

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

Shopify API 参考可以在here找到。

【问题讨论】:

    标签: javascript reactjs shopify react-redux


    【解决方案1】:

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

    【讨论】:

    • 好的。很酷,所以attrs 应该是从中获取原始数据的正确位置。谢谢你!我想要原始数据的原因是因为我想利用 facebook.github.io/immutable-js 之类的东西,但我还不知道这将如何与 Shopify 提供的模型发挥作用
    【解决方案2】:

    在您的示例代码中,您使用 API 密钥调用 API?您确实了解这会使您的商店遭受您可能不希望的尽可能多的滥用,对吗?你确定你知道你在那里做什么?

    【讨论】:

    • 我想过,但我认为它不会受到任何滥用。例如,您不能使用此 API 从您的 shopify 管理员中删除产品。某人可以做的最大事情是获取产品信息并使用它生成一个shopify结帐页面并最终购买它们,但我不会称之为滥用,只是聪明的程序员买家:D。以下是 api 功能的完整规范:shopify.github.io/js-buy-sdk/api/classes/ShopifyBuy.html
    • 有道理...这是一个有限的密钥,只是为获取产品而设计的。行。干得好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多