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