Как ждать, пока элемент списка мангуста будет выдвинут? - PullRequest
0 голосов
/ 21 мая 2018

У меня есть экспресс-маршрут, который запускается, когда пользователь щелкает, чтобы отправить новый комментарий в ветку.Маршрут обрабатывает это, помещая новый комментарий в конец списка в объекте mongoose, а затем перенаправляя пользователя обратно на страницу, с которой он пришел.Это должно показать им список всех комментариев, включая тот, который они только что добавили, но это не так.Вместо этого он показывает неизмененный список.Чтобы показать комментарий, который они только что добавили, необходима перезагрузка.

Рассматриваемая функция выглядит следующим образом:

router.post('/get/:faultId/new_comment', function(req, res, next) {
  var commenter = req.body.first_name + " " + req.body.last_name;
  var comment = req.body.new_comment_text
  var datetime = Date.now();

  var comment_object = commentCreate(commenter, comment, datetime);

  FaultReport
    .findOne({
      '_id': req.params.faultId
    })
    .exec(function(err, report) {
      if (err) return console.error(err);
      report.comment.push(comment_object);
      report.save();
    });

  res.redirect('/api/get/' + req.params.faultId);
});

Я явно что-то неправильно понимаю.Как мне дождаться обновления базы данных, прежде чем перенаправлять пользователя?

1 Ответ

0 голосов
/ 22 мая 2018

Передайте обратный вызов report.save и позвоните res.redirect оттуда:

router.post('/get/:faultId/new_comment', function(req, res, next) {
  var commenter = req.body.first_name + " " + req.body.last_name;
  var comment = req.body.new_comment_text
  var datetime = Date.now();

  var comment_object = commentCreate(commenter, comment, datetime);

  FaultReport
    .findOne({
      '_id': req.params.faultId
    })
    .exec(function(err, report) {
      if (err) return console.error(err);
      report.comment.push(comment_object);
      report.save(function(err) {
        res.redirect('/api/get/' + req.params.faultId);
      });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...