Как использовать обещание всего в lodash forEach, разрешить его и сделать res.send (data) - PullRequest
0 голосов
/ 28 апреля 2019

Я новичок в 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.Заранее спасибо

1 Ответ

2 голосов
/ 28 апреля 2019

Если вы используете Object.entries вместо _.forEach и .map для массива обещаний, вы можете использовать Promise.all для этого:

 Promise.all(
   Object.entries(req.body).map(value => gridObj.save(value))
 ).then(/*..*/).catch(/*...*/)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...