使用 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
fastdfs的tracker和storager能放在同一台主机上吗