要解决的问题 我想一一读取 mongodb 集合中的所有文档,并将 API(使用 npm 请求模块)结果保存在另一个集合($out)中。
我的努力 我只是尝试在async/await中一一取出值并一一发送请求
let data = await models.myCollection.find();
并通过迭代语句将数据数组请求一一发送,如下代码。
for( let i = 0 ; i < data.length ; i++ ) {
await request(...);
}
馆藏文献数量约1500篇。
期望 当我按照上面的步骤进行时,没有错误。 但我想知道什么是有效的逻辑。 (我认为如果有 sample 会更好。)
谢谢。
最佳答案
虽然我之前没有尝试过这种方法,但请验证我的方法并提出质疑。我的建议是使用streams
。我之前曾使用它来转换大型 JSON 文件中的数据。
您可以在这里引用一些文档:https://mongodb.github.io/node-mongodb-native/2.0/tutorials/streams/
RxJS
是一个对我有用的处理流的 NPM 模块。它具有易于掌握的可观察和订阅者模式。引用:https://github.com/Reactive-Extensions/RxJS
对于您的示例,如果要扩展到数百万或数千条记录,您只需处理每个文档并调用 API。更好的方法是批量处理请求,您可以获取 100 或 1000 的倍数,并调用 API 一次来更新所有记录。
关于node.js - 一种高效地逐一检查集合中所有数据的方法(nodejs、mongoose),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58869278/