Я не могу найти способ заставить мою функцию поиска работать. Я хотел бы найти все billIds из коллекции счетов, а затем проверить каждый billId внутри транзакции DB.Mongoose find() проблемы с обратными вызовами
Проблема в том, что из-за aSynch - я считаю, что идентификатор не обновляется в моем цикле. Вот код:
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
^Хороший результат - Поставляется с первого console.log внутри для().
, а затем:
Transaction BillId: 54a015753547a6c026000001
Transaction BillId: 54a015753547a6c026000001
Transaction BillId: 54a015753547a6c026000001
^Плохой результат - Его повторив результат последнего из за() и мне нужны все результаты.
На первой консоли.log(), когда я получаю результаты от первого find() (Bills.find()
), я могу видеть все идентификаторы в журнале, но когда я пытаюсь получить их во втором Find (Transactions.find()
)), они повторяют последний идентификатор. Так что в этом текущем состоянии я не могу запросить db для каждого id. Любая помощь по этому поводу ценится.
Пожалуйста, дайте мне знать, если вам нужно какое-либо разъяснение.
Заранее благодарен!
'вар billId = счетов [Элемент] ._ идентификатор;' должен быть 'вар billId = item._id'. – BatScream
Это не главное. Я получаю billId там, проблема в том, что когда я пытаюсь выполнить 'Transactions.Find()' на каждый billId, billId всегда является последним billId из 'Bills.find()'. Кроме того, ваше предложение не будет работать, поскольку элемент представляет ключ в моем массиве. –