如何在lodash forEach中使用promise all并解析它并执行res.send(data)

问题描述 投票:0回答:1

我是node.js的新手。我使用lodash forEach进行保存操作。现在问题是res.send()正在多次执行,这会抛出错误,就像标题在发送后无法设置一样。

我听说过PromiseAll,但我不知道如何实现它。我阅读文档,但我认为我做错了。如果有人可以提供帮助,那将非常有帮助。

_.forEach(req.body ,function(value){
  gridObj.save(value)
    .then((results) => {
      var data = {
        status: 200,
        message: 'Record save successfully ',
        data: results,
      };
      console.log(`data saved successfully ${JSON.stringify(results)}`);
      res.send(data);
    }).catch((error) => {
      console.log(`error in save ${error}`);
      res.send(error);
    })
});

我希望数据将在mongoDb中逐个存储。先感谢您

javascript node.js express
1个回答
2
投票

如果你使用Object.entries而不是_.forEach.map到一组promises,你可以使用Promise.all

 Promise.all(
   Object.entries(req.body).map(value => gridObj.save(value))
 ).then(/*..*/).catch(/*...*/)
© www.soinside.com 2019 - 2024. All rights reserved.