使用 Shipment.all 和 Tracker.all 的 Nodejs 分页

Posted

技术标签:

【中文标题】使用 Shipment.all 和 Tracker.all 的 Nodejs 分页【英文标题】:Nodejs Pagination using Shipment.all and Tracker.all 【发布时间】:2020-02-03 15:00:43 【问题描述】:

Appolgies 我对 Nodejs 和编程还很陌生,所以长话短说:

使用 Easypost Nodejs API,我需要使用我的 Nodejs/express 后端每天 3 次检索所有跟踪状态。

我以非常低效的方式检索所有跟踪状态的方式达到了速率限制'。这是对每个 Shipmentid 的单独调用以获取 Trackingid,然后获取最新状态。我知道非常糟糕。

所以我去了文档并想,很酷,我会分开做事,获取我所有的包裹 (myDB),然后单独获取所有跟踪器的列表,然后使用货件 ID 进行匹配。

问题...

    我是新手。

    如何使用分页进行多次调用 -> 我的第一个想法是运行初始调用以查看是否有多个页面,如果“has_more”为真,然后在尽可能多的页面上运行尽可能多的次数正如我过去 2 个月的需要。

    下一个问题...我似乎缺少来自 easypost API 的响应中的分页信息。在文档中应该有一个响应 trackers:[all tracker info here], "has_more": true 但响应中只有一组跟踪器。即使我将页面大小设置为 1 或 2...

获取跟踪器列表的当前代码:

      .get((req, res) => 
        console.log('Recieved - ' + req.method + req.originalUrl)
        easyPostAPI.Tracker.all(req.body)
          .then( response => 
            console.log('Sent - ' + req.method + req.originalUrl)
            res.json(response)
          )
          .catch(err => 
            console.log(err)
            res.status(400).json(err)
          )
      )```


hopefully it's not just me getting it wrong.


【问题讨论】:

【参考方案1】:

EasyPost just released a 3.8.0 version of the node library,您可以在其中访问数组上的 has_more 属性,如下所示:

api.Shipment.all( page_size: 2, ... ).then(shipment => console.log(shipment.has_more))

在@easypost/api v4.0.0 中可能有更方便的分页方式,但目前,上述属性应该允许您进行分页。

【讨论】:

感谢您修复它并发布新版本! Easypost 是否有任何地方讨论计划中的更改,了解发展情况会很有趣! 目前还没有公开讨论这些事情的地方。随意写支持帮助,或为功能请求提出 github 问题。

以上是关于使用 Shipment.all 和 Tracker.all 的 Nodejs 分页的主要内容,如果未能解决你的问题,请参考以下文章

scrape_tracker 不使用 libtorrent 发出任何警报

Hadoop Datanode、namenode、secondary-namenode、job-tracker 和 task-tracker

怎么检测tracker服务器有效?

fastdfs的tracker和storager能放在同一台主机上吗

webpack-bundle-tracker 没有创建 webpack-stats.json?

从 Etherscan Token Tracker 获取代币持有者数量和交易数量