【发布时间】:2014-07-24 14:56:22
【问题描述】:
基本上,我正在尝试找出一种方法来在 for 循环中执行一堆查询,然后在它们全部完成后执行一些操作。
我让它工作了,但这只是因为我使用了这个很棒的库,它用 Promise 包装了所有 mongodb。
var mongo = require('mongod')
var db = mongo('mongodb://localhost/builder', ['block''])
var block_ids = ['538d097bbb12479d0e9f70ab', '538ddc7d06c1f0fe296178b1'];
var prom = null;
var blocks = [];
for (i in block_ids) {
var block_id = block_ids[i];
prom = db.block.findOne({_id:db.ObjectId(block_id)})
.then(function(results) {
blocks.push(results);
})
}
prom.done(function() {
console.dir(blocks)
console.log("DONE! " + blocks.length)
})
我的问题是这样的。在没有承诺的情况下,你到底怎么能做类似的事情?好像很难啊!
【问题讨论】:
-
你不应该回避承诺。它们已经在 ES6 中标准化,现在甚至在浏览器中。方法是使用它们。
标签: node.js mongodb promise q monk