【发布时间】:2016-06-01 07:05:09
【问题描述】:
我正在使用 mongoDB 的本机驱动程序。在数据库中,我有大约 7 个集合,我想创建一个变量来存储每个集合中的条目数量减去最后一个集合。之后我想创建另一个变量来存储最后一个集合的条目,然后我想通过 res.render() 命令传递变量并将其显示在网页上。
我在这里遇到的问题是我太习惯于同步执行函数,在这种情况下,这些函数会直接跳出窗口。
如果一切都同步执行,下面的代码就是我的想法。
var count = 0;
db.listCollections().toArray(function(err,collection){
for(i = 1; i < collection.length;i++){
db.collection(collection[i].name).count(function(err,value){
count = count + value;
})
}
var count2 = db.collection(collection[i].name).count(function(err,value){
return value;
})
res.render('index.html',{data1: count, data2: count2})
})
显然我不想这样做,所以我试着玩弄 Promise,但结果更加困惑。
【问题讨论】:
-
我错过了一个特定的问题?还是您想“修复”代码?
-
查看this 或者不使用promise,您可以将每个调用嵌套在回调函数中,但从长远来看,promise 会让您更快乐。
-
好吧,我想我想要“修复”代码。但获得某种提示显然会有所帮助。
标签: javascript mongodb asynchronous