【发布时间】:2018-05-21 05:18:19
【问题描述】:
我是 mongo 的新手,现在淹没在大量文档中。我只想使用 mongoose 游标与游标内的数据操作异步工作。它应该等待播放下一次迭代,直到操作完成。 我读到我们可以通过
QueryCursor#eachAsync(fn, [options], [options.parallel], [callback])
如果 fn 返回一个承诺,将等待承诺解决
由于我是 mongo 的新手,我不知道如何创建一个承诺并在以后解决它。
var cursor = Users.find({ "is_verified" : false }).cursor();
cursor.eachAsync(function (doc) {
//create promise here
async.series({
one: function(callback){
callback(null,1);
},
two: function(callback){
callback(null,2);
},
three: function(callback){
callback(null,3);
},
four: function(callback){
//resolve promise here
if() callback(null,4)
},
},function(err,result){})
}).then(()=>console.log('FINISHED'));
【问题讨论】:
-
你能再清楚一点吗?我想帮忙。
-
我想要做的就是从我的数据库中获取数据一个接一个地对它们执行操作(这将在 html 模板中提供数据并向用户发送邮件),这将是一个一系列异步操作并不断重复所有数据。
-
所以流程类似于: find(1) -> waitForFindFinish(1) -> storeInVariable(1) -> find(2) -> waitForFindFinish(2) -> storeInVariable(2) ->... -> find(n) -> waitForFindFinish(n) -> storeInVariable(n) ???
-
find(1) -> waitForFindFinish(1) -> feedDetailInTemplate(1) -> sendMailofTemplate(1) -> find(2) -> waitForFindFinish(2) -> feedDetailInTemplate(2) - > sendMailofTemplate(2)......
-
所以只有find的参数在变?
标签: node.js mongodb asynchronous mongoose mongodb-query