如何使用Microapps Node.js模块处理Shopify的API调用限制

大卫·特顿

我一直在努力寻找答案,我只是想不通。我正在通过microapps为Shopify API使用Node.js模块我有一个JSON对象,其中包含我需要更新的产品ID和skus的列表,因此我遍历文件并调用了一个调用api的函数。Shopify的API会限制对其的调用,并发送剩余值的响应标头。该节点模块提供了一个包含限制和用法的对象。我的问题是基于以下代码,当我达到极限时,如何在setTimeout或类似时间可以做到这一点。首次调用后,它将返回极限对象,如下所示:

{
 remaining: 30,
 current: 10,
 max: 40
}

由于尝试的所有操作均失败,这是我不遵守限制的情况:

const products = JSON.parse(fs.readFileSync('./skus.json','utf8'));

for(var i = 0;i < products.length; i++) {
  updateProduct(products[i]);
} 

function updateProduct(product){
    shopify.productVariant.update(variant.id, { sku: variant.sku })
    .then(result => cb(shopify.callLimits.remaining))
    .catch(err => console.error(err.statusMessage));
} 

我知道我需要实现某种回调以检查剩余使用率是否较低,然后等待几秒钟再调用一次。任何帮助将不胜感激。

菜鸟

我会使用某些方法来限制shopify-api-nodeShopify.prototype.request)用于创建请求的函数的执行速度,例如https://github.com/lpinca/valvelet

以下代码未经测试,但可以正常工作。它应该遵守每秒2个呼叫的限制。

var Shopify = require('shopify-api-node');
var valvelet = require('valvelet');

var products = require('./skus');

var shopify = new Shopify({
  shopName: 'your-shop-name',
  apiKey: 'your-api-key',
  password: 'your-app-password'
});

// Prevent the private shopify.request method from being called more than twice per second.
shopify.request = valvelet(shopify.request, 2, 1000);

var promises = products.map(function (product) {
  return shopify.productVariant.update(product.id, { sku: product.sku });
});

Promise.all(promises).then(function (values) {
  // Do something with the responses.
}).catch(function (err) {
  console.error(err.stack);
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在整个api调用中使用node.js中的全局错误处理代码

限制在Node.js中使用模块导出

使用Express,Node.JS和Require模块进行外部API调用

如何使用Node.js ExpressJS或Superagent调用Freebase API

如何确保我的node.js处理程序在返回值之前完成api调用?

使用Node.js调用JSON API

如何编写Node.js模块以处理传入的管道流

如何使用express模块限制对node.js中许多文件夹的访问

Node.js-如何在不超过速率限制的情况下在for循环中调用Facebook API?

Node.js-使用每秒5个请求的API限制

我如何使用Node.js请求模块进行curl调用

无法使用 node.js 中的应用程序从扩展模块调用基本模块

如何使用promise将数组从模块返回到API?异步功能和承诺-Node.js

如何使用Node xml2js模块转义字符?

Node.js:如何使用异步模块执行无限循环

如何使用Node.js解决“找不到模块”错误?

如何在Node.js Lambda中使用请求模块

如何使用Node.js Express模块化路由

如何使用C ++插件中内置模块的node.js

如何使用node.js请求模块发送文件?

如何使用强大的模块在Node JS中上传多个图像

使用Node.js和Express进行简单的API调用

在 Node.js 中使用 API 调用清除 Cloudflare 缓存

使用sinon模拟node.js API调用

Node.js Twilio 使用 REST API 进行调用

Node.js - 使用 axios 调用 OCR 空间 api

使用node.js测试API如何处理无效的JSON语法请求主体

如何使用Node的调试模块(Windows)?

如何在带有Node.js的JavaScript模块文件之间使用事件处理程序?