我正在尝试将文档ID数组作为JSON响应发送,但由于响应而获得的数组为空。如何确保在发送数组IDs
作为响应之前先由文档exports.createItem = async (req,res,next) => {
let itemsIds = [];
req.body.forEach( async element => {
let doc = await Item.findOneAndUpdate({
type: element.type,
color: element.color,
size: element.size
}, {
$inc:{stock: element.stock}
}, {upsert:true, new: true});
itemsIds.push(doc._id);
});
res.status(200).json({
success: true,
itemsIds: itemsIds
})
}
填充数组?
res.status(200).json({...})
我想确保itemsIds
方法仅在将所有文档ID推送到mongo DB之后才运行。现在,我在响应中得到的[ ]
为SELECT
pageTitle,
SUM(unique_pageviews) AS unique_pageviews,
SUM(CASE WHEN traffic_channel = 'Organic' THEN unique_pageviews ELSE 0 END) AS Organic,
SUM(CASE WHEN traffic_channel = 'Email' THEN unique_pageviews ELSE 0 END) AS Email,
SUM(CASE WHEN traffic_channel = 'Paid' THEN unique_pageviews ELSE 0 END) AS Paid
FROM yourTable
GROUP BY
pageTitle;
。如何在发送响应之前先确保由item id填充itemsIds数组?
答案 0 :(得分:2)
forEach循环包含一个回调函数,在这里我们不应该使用异步等待,使用for循环来等待结果,将其推入数组,然后发送响应。
exports.createItem = async (req,res,next) => {
let itemsIds = [];
for (var element of req.body) {
let doc = await Item.findOneAndUpdate({
type: element.type,
color: element.color,
size: element.size
}, {
$inc:{stock: element.stock}
}, {upsert:true, new: true});
itemsIds.push(doc._id);
}
res.status(200).json({
success: true,
itemsIds: itemsIds
})
}