我做了這個功能,但我得到Unhandled Promise Rejection Warning
。 嘗試重構,但不知何故,我沒有做正確的。未處理的承諾拒絕警告
router.post('/authenticate', function (req, res) {
User.findOne({username: req.body.username})
.select('username password')
.exec(function (err, user) {
if (err) throw err;
if (!user) {
res.json({success: false, message: 'Could not authenticate user'});
} else if (user) {
if (req.body.password) {
var validPassword = user.comparePassword(req.body.password);
}
else {
res.status(200).json({success: false, message: 'Please provide password'})
}
if (!validPassword) {
res.status(500).json({success: false, message: 'Could not authenticate password'});
} else {
var token = jwt.sign({username: user.username, email: user.email}, secret, {expiresIn: '24h'});
res.json({success: true, message: 'User authenticated', token: token});
}
}
});
});
你能告訴我應該如何重構它使其工作? 在此先感謝!
'如果(ERR)拋出犯錯;'絕對不看的權利 – Bergi
僅供參考,您的代碼,可最終調用兩個'res.status(200)以.json(...)的路徑'和'res.statu(500).json(...)'這是不正確的。另外,if(!user){}否則if(user){}'可以只是'if(!user){} else {}'。根據定義,如果你到了'else',那麼就有'用戶'值。 – jfriend00