我有一个要填充对象的数组,但是控制台会打印出[]。我知道这是猫鼬异步性质的问题,但我不确定如何解决...我希望itemCart充满用户的所有物品。
任何指导/帮助将不胜感激。谢谢!
代码如下:
let itemCart = [];
User
.findById(req.params.username)
.then(user => {
for (let i = 0; i < user.cart.length; i++) {
let itemId = user.cart[i];
Item.findById(itemId).then(item => {
itemCart.push(item);
});
}
console.log(itemCart); // returns []
})
.catch(err => {
console.error(err)
});
答案 0 :(得分:2)
您可以像这样应用async / await:-
let itemCart = [];
User
.findById(req.params.username)
.then(async user => {
for (let i = 0; i < user.cart.length; i++) {
let itemId = user.cart[i];
Let item = await Item.findById(itemId);
itemCart.push(item);
}
console.log(itemCart); // now it will return the array
})
.catch(err => {
console.error(err)
});