gpt4 book ai didi

javascript - MongooseJS findOne() 的意外结果

转载 作者:行者123 更新时间:2023-12-03 07:45:34 27 4
gpt4 key购买 nike

使用 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,但这感觉像是很多条件错误处理。这里有什么我没有正确理解的地方吗?

最佳答案

本打算作为评论发布,但将其粘贴为答案更容易..

您可以简化 if-else 嵌套,因为您在每个条件的末尾返回,如下所示:

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'});
}
if (!user) {
console.log('User not found.');
return res.json({error: 'Email and/or password incorrect.'});
}
console.log('User ' + user.email + ' found. Logging in.');
res.json({
token: jwt.sign({}, 'top-secret', {subject: user}),
data: data[user]
});
});
});

关于javascript - MongooseJS findOne() 的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35221487/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com