Параметр запроса NodeJS не показывает значение - PullRequest
0 голосов
/ 04 мая 2019

У меня есть следующий URL для сброса пароля с помощью токена:

http://localhost:xxxx/reset/a513293ba51df393568cebfab178754eb284bb62

У меня есть следующий обработчик маршрута:

router.post('/reset/:token', function(req, res) {...

По какой-то причине мой параметр запроса не отображаетсязначение в моем маршруте.req.params.token отображает: reset, а не a513293ba51df393568cebfab178754eb284bb62

Я, должно быть, упускаю что-то очень очевидное, потому что все мои другие страницы и маршруты работают нормально.

Потратив немного больше времени на это, яДумаю, у меня есть идея, почему мой объект req не работает.Это должно быть из-за асинхронного вызова.Как я могу заставить это работать?

Мой полный маршрут такой:

router.post("/reset/:token", function(req, res) {
    async.waterfall([
      function(done) {
          console.log(req.params.token);
          UserModel.findOne({ resetPasswordToken: req.params.token, resetPasswordExpires: { $gt: Date.now() } }, function(err, user) {
          if (!user) {
            return res.redirect('/login');
          }

          user.password = req.body.password;
          user.resetPasswordToken = undefined;
          user.resetPasswordExpires = undefined;

          user.save(function(err) {
            req.logIn(user, function(err) {
              done(err, user);
            });
          });
        });
      },
      function(user, done) {
        var smtpTransport = nodemailer.createTransport({
          service: 'SendGrid',
          auth: {
            user: 'xxx',
            pass: 'xxx'
          }
        });
        var mailOptions = {
          to: user.email,
          from: 'passwordreset@demo.com',
          subject: 'Your password has been changed',
          text: 'Hello,\n\n' +
            'This is a confirmation that the password for your account ' + user.email + ' has just been changed.\n'
        };
        smtpTransport.sendMail(mailOptions, function(err) {
          console.log('Success! Your password has been changed.');
          done(err);
        });
      }
    ], function(err) {
      res.redirect('/');
    });
  });
...