每当用户注册时,我都会向他发送一封电子邮件,其中包含用户需要单击以进行验证的链接。我在该链接中传递令牌。当用户单击链接时,他应该得到验证,但我无法执行此操作。我只能从链接中检索令牌,但无法在数据库中找到用户并更新值。

这是我的代码:

router.route('/verify')
.get(isNotAuthenticated, function(req, res){
var verifyToken = req.query.id;
var user =  User.findOne({ 'secretToken': verifyToken });


        if (!user) {
        req.flash('error', 'No user found with this email id, please check your email id or incorrect link');
        res.redirect('/users/register');
        return;
      }

      user.active = true;
      user.secretToken = '';
      user.save();

      req.flash('success', 'Thank you! Now you may login.');
      res.redirect('/users/login');
      res.redirect('login');

最佳答案

尝试使用promise代替分配来执行此操作。

User.findOne({ 'secretToken': verifyToken })
.then(user => {
  // do something with user
})
.catch(err => {
  // do something with error
 })

09-11 19:02
查看更多