如何查询或导出具有价格限制的所有Shopify客户或订单

时间:2020-08-20 19:18:38

标签: shopify shopify-app shopify-api shopify-api-node

我很想知道如果我想导出所有满足特定条件的客户或订单(例如json或csv等)的最佳方式,请考虑速率限制和分页因子。我猜想这将是一种循环脚本,最多可查询250条记录,并重复进行直到分页完成。有没有任何代码可以显示这一点,我觉得对于许多应用程序来说,这样做很有用或需要做某些事情。它或多或少是shopify的导出功能,但可以在自己的应用程序中完成。

2 个答案:

答案 0 :(得分:0)

Shopify有一个不错的Node.js API模块。它提供了简单的分页处理和速率限制。从应用程序的角度来看,您可能决定使用某种队列机制。由于根据订单或客户的数量,这些过程可能需要更长的时间才能完成,因此,每当客户请求导出记录时,请将作业推入队列并在完成后通知。

对于使用订单获取订单或使用API​​的客户,同时注意限速,请遵循Shopify API Node Docs中的以下代码。

const Shopify = require("shopify-api-node");

const shopify = new Shopify({
  shopName: "your-shop-name",
  apiKey: "your-api-key",
  password: "your-app-password",
  autoLimit: true,
});

(async () => {
  let params = { limit: 250 };
  do {
    const products = await shopify.product.list(params);
    console.log(products);
    params = products.nextPageParameters;
  } while (params !== undefined);
})().catch(console.error);

autoLimit -可选-此选项可让您管理请求 以避免达到速率限制。要求数量有限 使用令牌桶算法。可接受的值为布尔值或 纯JavaScript对象。使用对象时,calls属性和 interval属性指定填充率和bucketSize 属性值区大小。例如{通话:2,间隔:1000, bucketSize:35}指定每秒2个请求的限制, 突发35个请求。设置为true时,请求被限制为 在上面的示例中指定。默认为false。

完成后,您可以根据需要将它们编写为csv或JSON或其他任何形式。对于队列,您可以使用BullAgenda之类的东西。

答案 1 :(得分:0)

获取所需数据的更好方法是使用GraphQL和批量查询。通过这些,您可以根据客户或订单数据指定所需的内容。然后,通过查询请求数据,然后Shopify将所有数据打包到一个完整的JSONL文件中。随便看看,直到他们完成打包,这时您会获得一个下载URL,可以在其中拥有所有数据。

分页是导出数据的一种糟糕方法。它可以正常工作,但是速度很慢,并且会遇到网络错误,因为与Shopify进行过很多合作的人都会告诉您。