Javascript Mongoose在循环中获取多个对象

Javascript Mongoose在循环中获取多个对象,javascript,mongodb,mongodb-query,Javascript,Mongodb,Mongodb Query,我正在尝试使用mongoose从MongoDB获取多个对象。我有两个名为user和order的主表 用户有一个名为order history的数组,order history包含订单 当我将订单推送到orders数组时,订单推送成功。但是当我想从循环外部获得订单时,由于循环内部发生了异步操作,我的数组什么也得不到 代码 userModel.findOne({'username':username},函数(err,user){ 如果(用户){ var订单=[] 对于(var i=0;i使用异步函数

我正在尝试使用mongoose从MongoDB获取多个对象。我有两个名为user和order的主表

用户有一个名为order history的数组,order history包含订单

当我将订单推送到orders数组时,订单推送成功。但是当我想从循环外部获得订单时,由于循环内部发生了异步操作,我的数组什么也得不到

代码
userModel.findOne({'username':username},函数(err,user){
如果(用户){
var订单=[]

对于(var i=0;i使用异步函数,并等待每个订单

userModel.findOne({username},异步函数(err,user){
如果(!user)返回;
常量顺序=[];
for(user.orderHistory的常量{orderId:id}){
const order=await orderModel.findOne({id}).exec();
命令。推送(命令);
}
控制台日志(订单);

})
改用异步函数,并等待每个订单

userModel.findOne({username},异步函数(err,user){
如果(!user)返回;
常量顺序=[];
for(user.orderHistory的常量{orderId:id}){
const order=await orderModel.findOne({id}).exec();
命令。推送(命令);
}
控制台日志(订单);

})
还可以解释为什么有问题的代码不起作用。还可以解释为什么有问题的代码不起作用。
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)
            })
        }
    })