【发布时间】:2015-03-01 12:35:12
【问题描述】:
我找不到让我的查找功能正常工作的方法。 我想从 bills 集合中找到所有 billId,然后检查事务数据库中的每个 billId。
问题是,由于 aSynch - 我认为,id 不会在我的循环中更新。 代码如下:
Bills.find({type: bill_type, endDate: {"$gte" : new Date(year + "-" + month + "-1")}}).find(function(err, bills){
if(err)
res.send(err);
details.bills = bills;
for(key in bills){
var billId = bills[key]._id;
console.log("BillId: " + billId); // Here the ids are unique (which is what I want)
Transactions.find({billId : billId}, function(err, transactions){
if (err) {
console.log('error: '+ err)
} else {
console.log("Transaction BillId: " + billId); // Here I get always the same ID - which is not quiet what I need.
}
});
//console.log(transactions);
}
res.send(details);
});
控制台的结果是:
BillId: 549bf0597886c3763e000001
BillId: 54a014bfac01ca3526000001
BillId: 54a015753547a6c026000001
^ 好结果 - 来自 for() 中的第一个 console.log。
然后:
Transaction BillId: 54a015753547a6c026000001
Transaction BillId: 54a015753547a6c026000001
Transaction BillId: 54a015753547a6c026000001
^ 错误的结果 - 它重复了 for() 的最后一个结果,我需要所有结果。
在第一个 console.log() 中,当我从第一个 find() (Bills.find()) 获得结果时,我可以看到日志上的所有 id,但是当我尝试将它们放入第二个 Find ( Transactions.find()),他们重复最后一个 id。
因此,在当前状态下,我无法为每个 id 查询数据库。对此的任何帮助表示赞赏。
如果您需要任何说明,请告诉我。
提前致谢!
【问题讨论】:
-
var billId = bills[item]._id;应该是var billId = item._id。 -
这不是重点。我在那里得到了 billId,问题是当我尝试对每个 billId 执行
Transactions.Find()时,billId 始终是来自Bills.find()的最后一个 billId。此外,您的建议将不起作用,因为该项目代表我数组中的键。
标签: javascript node.js callback mongoose