猫鼬在循环中获取多个对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猫鼬在循环中获取多个对象相关的知识,希望对你有一定的参考价值。
我正在尝试使用mongoose从MongoDB获取多个对象。我有两个主表名为user和order。
用户有一个名为订单历史的数组,订单历史包含订单。
当我将订单推送到订单数组时,订单成功推送。但是当我想从循环外部获取命令时,由于循环内部发生异步操作,我的数组没有任何结果。
CODE
userModel.findOne({'username': username }, function (err, user) {
if(user){
var orders = []
for(var i=0;i<user.orderHistory.length;i++){
var orderId = user.orderHistory[i].orderId
var order = orderModel.findOne({'id': orderId}).exec()
order.then(function(order){
orders.push(order)
})
}
orders.then(function(order){
console.log(order)
})
}
})
如何在循环之外获得订单?萨诺斯
答案
改为使用异步函数,每个订单使用await
。
userModel.findOne({ username }, async function (err, user) {
if (!user) return;
const orders = [];
for (const { orderId: id } of user.orderHistory) {
const order = await orderModel.findOne({ id }).exec();
orders.push(order);
}
console.log(orders);
})
以上是关于猫鼬在循环中获取多个对象的主要内容,如果未能解决你的问题,请参考以下文章