NodeJS请求参数未显示值

时间:2019-05-04 16:09:42

标签: node.js parameters request

我有以下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('/');
    });
  });

0 个答案:

没有答案