我通过保存餐食 ID 创建订单,因此我使用餐食 ID 从餐食表获取餐食数据,但现在出现问题,尽管使用了异步和等待。它返回我的响应并带有空数据,因为代码没有等待。
我不想使用 promise ,因为我的代码库使用异步和等待。我希望保持一致。
static async createOrders(meals, userId, catererId) {
try {
const newMeals = JSON.stringify(meals);
const createdOrder = await Order.create({
order: newMeals,
total: 20180,
caterer_id: 1,
user_id: userId,
delivery_status: 0,
}, {
raw: true
});
const {
order
} = createdOrder.dataValues;
let newOrder = [];
await order.forEach(async(ord) => {
const mealId = Object.keys(ord)
await Meal.findAll({
where: {
id: {
[Op.or]: [...mealId]
}
},
raw: true,
})
newOrder = [...res];
})
const response = {
status: 'success',
message: 'order created',
data: newOrder,
};
return response;
} catch (error) {
const response = {
message: error.message,
err: true
};
throw response;
}
}
}
回应
{
"status": "success",
"createdOrder": {
"status": "success",
"message": "order created",
"data": []
}
}
数据不能为空
最佳答案
async/await 可能无法在 forEach 循环内按预期工作。您应该使用 for...of 循环。试试这个:
static async createOrders(meals, userId, catererId) {
try {
const newMeals = JSON.stringify(meals);
const createdOrder = await Order.create({
order: newMeals,
total: 20180,
caterer_id: 1,
user_id: userId,
delivery_status: 0,
}, {
raw: true
});
const {
order
} = createdOrder.dataValues;
let newOrder = [];
for(let ord of orrd) => {
const mealId = Object.keys(ord)
let res = await Meal.findAll({
where: {
id: {
[Op.or]: [...mealId]
}
},
raw: true,
})
newOrder = [...res];
})
const response = {
status: 'success',
message: 'order created',
data: newOrder,
};
return response;
} catch (error) {
const response = {
message: error.message,
err: true
};
throw response;
}
}
请告诉我是否解决了您的问题
关于javascript - 响应不返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56458017/