如何使用猫鼬在Node.js中使用``for''将每个数组保存到每个文档

时间:2019-06-25 03:32:23

标签: node.js mongodb

我想将每个数组数据保存到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');
          }
        }      
  }
};

2 个答案:

答案 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');