【发布时间】:2012-03-01 04:02:57
【问题描述】:
我有一个有趣的案例,我需要使用 Mongoose 在 MongoDB 中进行一些查询,但是在我完成所有查询之前就返回了响应。
我有两种文档类型,列表和项目。在一个特定的调用中,我需要获取特定用户的所有列表,然后遍历每个列表并获取所有项目并将它们附加到适当的列表中,然后再返回。
List.find({'user_id': req.params.user_id}, function(err, docs){
if (!err) {
if (docs) {
var results = [];
_und.each(docs, function(value, key) {
var list = value.toObject();
list.items = [];
Item.find({'list_id': value._id}, function(err, docs) {
if (!err) {
_und.each(docs, function(value, key) { list.items.push(value.toObject()); });
results.push(list);
}
else {
console.log(err);
}
});
});
res.send(results);
(_und 是我导入 underscore.js 的方式)
显然问题在于回调,由于有多个循环,我无法在回调中返回。
也许在这种情况下,我需要提前获取计数并在每次迭代时检查它以确定何时返回结果。但这似乎并不优雅。
【问题讨论】:
标签: javascript node.js express mongoose