2017-04-26 77 views
0

我試圖添加重置密碼功能。當這些值與數據庫中的數據匹配時,用戶輸入用戶名,電子郵件和全名,密碼更改,否則會顯示錯誤。 這是林doing-重置節點js中的密碼

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("/"); 
}); 

}); 

但我想比較的不僅僅是用戶名多了,我想比較用戶too.And的電子郵件地址和名字時,我添加 - User.find({username:req.body.username},{email:req.body.email},{name:req.body.name})並輸入一些錯誤的數據,該頁面只是重新加載而不是顯示錯誤。 我應該做些什麼改變?請幫助。

IM使用快遞,的NodeJS,MongoDB的

+0

你應該改變行? http://passportjs.org/ –

+0

是的,即時通訊使用Passport @ DanGreen-Leipciger –

回答

1

你有重定向循環

!sanitizedUser的情況下,您重定向到相同的頁面res.redirect('/reset')

這會導致您的頁面繼續重新加載。您是否使用護照

res.redirect('/reset')

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

+0

它仍然不工作,順便說一句你考慮到即時通訊使用多個通用搜索(如我在問題結束時提到) –

+0

它適用於當我只使用findByUsername() –

+0

你嘗試過的硬編碼值?即User.find({username:「dan」},{email:「[email protected]」},{name:「Dan Green-Leipciger」})? –

0
if(req.body.username && req.body.email && req.body.name && req.body.password){ 

    //add logic to hash password below 
    let hashedPassword = req.body.password; 


    Model.findOneAndUpdate(
     { username : req.body.username, email : req.body.email, name : req.body.name }, 
     { "$set" : { password : hashedPassword } }, 
     //if below option "new" is set to true, call back will return new document else it will return old document beforeupdate 
     { new : true }, 
     //call back 
     function(err, person){ 
      if(err){ 
       //err found 
       res.send(err); 
      } 
      else{ 
       // no error and also person exists 
       res.send('Password successfully updated..'); 
      } 
     } 
    ); 
} 
else{ 
    res.send('Please provide all details..'); 
} 
+0

它顯示'密碼成功更新..',但新密碼不起作用,舊密碼不起作用 –

+0

如果您在成功執行console.log(人)其他部分,您是否獲得人物對象?它顯示哪個密碼? –

+0

它顯示新的密碼 –