将Mongoose用作NodeJS的ODM,但不完全了解错误处理的工作原理。它有效,但看起来不对,并且不符合文档,所以我担心沿着这条路走下去会困扰我。
例如,这是一条基本的登录路线:
app.post('/signin', function(req, res){
var email = req.body.email;
var password = req.body.password;
mongoose.model('User').findOne({
email: email,
password: password
}, function(err, user){
if (err){
console.log('Database Error')
return res.json({error: 'Database Error'})
} else {
if (!user) {
console.log('User not found.');
return res.json({error: 'Email and/or password incorrect.'})
} else {
console.log('User ' + user.email + ' found. Logging in.');
res.json({
token: jwt.sign({}, 'top-secret', {subject: user}),
data: data[user]
})
}
}
})
})
我特别担心:
if (err) {
//do something
} else {
if (!user){
//do something else
} else {
//log the user in
}
}
在今天之前没有真正使用过Mongo,但这感觉就像很多条件错误处理一样。有没有我在这里不能正确理解的东西?
答案 0 :(得分:1)
将作为评论发布,但更容易将其粘贴为答案..
您可以简化if-else嵌套,因为您在每个条件结束时返回,如下所示:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<DIV CLASS="box" STYLE="width:100%"><TABLE STYLE="width:100%"><TR><TH STYLE="width:220px">link</TH><TH STYLE="width:140px">foryou</TH><TH STYLE="width:140px">Timer</TH><TH/></TR><TR><TD><A CLASS="flink" HREF="https://www.google.com" TARGET="_blank">mylink</A></TD><TD>hi</TD><TD><SPAN CLASS="timer" data-minutes="1" data-secleft="0">Ready</SPAN></TD></TR><TR><TD><A CLASS="flink" HREF="https://www.google.com" TARGET="_blank">mylink</A></TD><TD>hi</TD><TD><SPAN CLASS="timer" data-minutes="1" data-secleft="0">Ready</SPAN></TD></TR>
</TABLE></DIV>