我想将每个数组数据保存到Nodejs的每个文档中。
因此,我在下面编写了此代码。
但是,当我运行此代码时,它仅保存body [0]。
您能推荐一些解决方案吗?
exports.saveOrder = (req, res) => {
const body = JSON.parse(res);
for (let i = 0; i < body.length; i += 1) {
const eachBody = body[i];
const order = new Order(eachBody);
order.save();
return res.send('order is saved');
}
}
}
};
答案 0 :(得分:1)
对于Db操作,您需要使用promise或async / await,并在所有订单保存到DB之后发送一次响应。添加try/catch
来捕获错误。
检查此代码,它现在应该可以工作。
exports.saveOrder = async (req, res) => {
try {
const body = JSON.parse(res); // check this before do you realy need to parse it or not
const allResults = [];
for (let i = 0; i < body.length; i += 1) {
const eachBody = body[i];
const order = new Order(eachBody);
const result = await order.save();
allResults.push(result);
}
return res.send(allResults);
} catch (e) {
console.log(e);
return res.send(e);
}
};
答案 1 :(得分:0)
这是因为您已在for循环内发送了响应(已使用的return)。 这样可以节省body [0]并返回响应。
在“ for循环”之外使用“返回”。
for (let i = 0; i < body.length; i += 1) {
const eachBody = body[i];
const order = new Order(eachBody);
order.save();
}
return res.send('order is saved');