使用 Node.js 僧侣和 MongoDB,我想模仿一个表连接:
- 在集合 A 上进行查找
- 对于每个结果 X,在集合 B 中查找,并更新 X
- 返回更新的结果列表
僧侣中数据库命令的异步性质给我带来了麻烦。这是我的初始代码。它不起作用,因为第二次调用find
立即返回一个承诺,并且结果在xs
响应中发送,然后才能更新。
var db = require('monk')('localhost/mydb');
db.get('collection').find({}, function(e,xs) {
xs.forEach(function(x){
coll_b.find({a_id:x._id}, function(e,bs) {
a['bs'] = bs;
});
});
res.json({'results':as});
});
我觉得我应该在这里使用承诺链,但我不知道该怎么做。任何帮助将不胜感激。