【发布时间】:2021-06-14 17:39:14
【问题描述】:
我有一个返回餐厅优惠的请求
console.log(offers) 在 for 循环中返回我想要的(带有对象的数组)但是当我使用 res.send(offers) 将报价发送给客户端时返回一个空数组
我该怎么办?
offers: async (req, res) => {
let orders = await req.models.order.find({
"customers.customer_id": req.user._id,
});
let cashbacks = await req.models.cash_backs
.find()
.populate("restaurant_id");
let offers = [];
for (let i = 0; i < cashbacks.length; i++) {
orders.forEach(async (order) => {
if (order.cash_back_id != cashbacks[i]._id) {
await req.models.order
.find({
"customers.customer_id": req.user._id,
cash_back_id: cashbacks[i]._id,
})
.then((result) => {
let allowCount = cashbacks[i].per_visit.values.length;
if (allowCount > result.length) {
offers = [...offers, cashbacks[i]];
console.log(offers); // return [{..}, {..}, {..}]
} else {
return;
}
});
}
});
}
res.send(offers);
},
【问题讨论】:
-
关于如何返回异步调用响应的非常经典的问题:stackoverflow.com/questions/14220321/…。
await也不能在.forEach或.map等数组方法中工作(它实际上并不等待)
标签: javascript node.js mongodb express asynchronous