在节点js

时间:2017-04-26 17:01:12

标签: node.js mongodb express authentication mongoose

我试图添加重置密码功能。用户输入用户名,电子邮件和全名,当这些值与数据库中的数据匹配时,密码被更改,否则会显示错误。 这就是我在做什么 -

app.post("/reset",function(req,res){
User.findByUsername(req.body.username).then(function(sanitizedUser){
if (sanitizedUser){
    sanitizedUser.setPassword(req.body.password, function(){
        sanitizedUser.save();
        req.flash("success","password resetted");
            res.redirect("/login");
    });
} else {
    req.flash("error","User doesnt exist");
            res.redirect("/reset");
}
},function(err){
    console.log(err);res.redirect("/");
});

});

但我想比较的不只是用户名,我想比较电子邮件和用户的名字。当我添加 - User.find({username:req.body.username},{email:req.body.email},{name:req.body.name})并输入一些错误的数据,页面只是不断重新加载而不是显示错误。 我应该做些什么改变?请帮忙。

我使用express,nodejs,mongodb

1 个答案:

答案 0 :(得分:1)

您有重定向循环

如果是!sanitizedUser,您会重定向到同一页res.redirect('/reset')

这会导致您的网页不断重新加载。

您应该更改以下行:

res.redirect('/reset')

res.status(500).send('Some useful error message')