node.js - 一种逐一检查集合中所有数据的有效方法(nodejs、mongoose)
问题描述
要解决的问题 我想一个一个地读取一个mongodb集合中的所有文档并保存API(使用npm request模块)导致另一个集合($out)。
我的努力 我只是尝试在 async/await 中一一取出值并一一发送请求
let data = await models.myCollection.find();
并通过如下代码的迭代语句一一发送数据数组请求。
for( let i = 0 ; i < data.length ; i++ ) {
await request(...);
}
集合中的文档数量约为 1500。
期望 当我按上述方法进行时,没有错误。但我想知道什么是有效的逻辑。(我认为如果我有样品会更好。)
谢谢你。
解决方案
虽然我之前没有尝试过这种方法,但请验证我的方法并对其提出质疑。我的建议是使用streams
. 我以前用它来转换大型 JSON 文件中的数据。
您可以在这里参考一些文档:https ://mongodb.github.io/node-mongodb-native/2.0/tutorials/streams/
一个很好的 NPM 模块来处理对我有用的流是RxJS
. 它具有易于掌握的可观察和订阅模式。参考:https ://github.com/Reactive-Extensions/RxJS
对于您的示例,如果它要扩展到数百万或数千条记录,您可以只处理每个文档并调用 API。更好的做法是批量处理请求,您可以在其中获取 100 或 1000 的倍数并调用 API 一次以更新所有记录。
推荐阅读
- regex - 通配符匹配反向查找
- python - 由于未运行 TTY Django,因此跳过了超级用户创建。巴本贝壳
- assembly - x86-64 的条件跳转是如何工作的?
- f# - F# 中任何元组位置的简写
- node.js - socket.io anonymous callback: can't call class functions
- java - Gradle 的“maven”和“maven-publish”插件有什么区别?
- angular - 使用代理解决 CORS 问题在浏览器中有效,而不是在模拟器或设备上
- rust - 尝试装箱特征对象时出现“预期的特征 A,找到 &A”
- java - Java - Random nextInt method returning the same integer
- excel-formula - Excel Conditionalis Statement to calculate the percentage value