如何在猫鼬中捕获错误代码
How to catch errorcode in mongoose
只是玩弄我的第一个登录系统,基于 nodejs/express/mongoose/passport。
我找到了更多关于这个主题的帖子,但它们都与我的略有不同。
型号:
module.exports = mongoose.model('User',{
id: String,
username: String,
password: String,
email: { type: String, unique: true }
});
对于用户名,查询用于检查用户名是否已被占用。但这不是这样做的方法。我了解到数据库本身必须对此进行检查。
所以这就是为什么我要在电子邮件字段中试用它。
保存一个新用户:
// save the user
newUser.save(function(err) {
if (err){
console.log('Error in Saving user: '+err);
//throw err; // server stops working immediately!!
return done(null, false, req.flash('message','DB error...'));
}
console.log('User Registration succesful');
return done(null, newUser);
});
我在 "throw err" 之前添加了斜线,因为节点服务器在尝试 "throw" 时立即停止。
我 copied/pasted return done(...) 部分,效果很好。
控制台错误信息:
Error in Saving user: MongoError: insertDocument :: caused by :: 11000
E11000 duplicate key error index: mydb.users.$email_1 dup key: { :
"sub@xxxxx.nl" }
问题:
如果发生任何数据库错误,我不能假设它总是重复插入错误,所以我需要对此进行检查,以便我可以显示有关重复电子邮件地址的消息或其他有用的消息。
我找不到类似的东西:
if(errorcode == E11000)
message="duplicate email"
else
message="an error occured bla bla"
错误代码存储在err.code
中,因此您可以这样检查:
if (err) {
if (err.code && err.code === 11000) {
message = "duplicate email";
} else {
message = "an error occured bla bla";
}
}
只是玩弄我的第一个登录系统,基于 nodejs/express/mongoose/passport。
我找到了更多关于这个主题的帖子,但它们都与我的略有不同。
型号:
module.exports = mongoose.model('User',{
id: String,
username: String,
password: String,
email: { type: String, unique: true }
});
对于用户名,查询用于检查用户名是否已被占用。但这不是这样做的方法。我了解到数据库本身必须对此进行检查。 所以这就是为什么我要在电子邮件字段中试用它。
保存一个新用户:
// save the user
newUser.save(function(err) {
if (err){
console.log('Error in Saving user: '+err);
//throw err; // server stops working immediately!!
return done(null, false, req.flash('message','DB error...'));
}
console.log('User Registration succesful');
return done(null, newUser);
});
我在 "throw err" 之前添加了斜线,因为节点服务器在尝试 "throw" 时立即停止。 我 copied/pasted return done(...) 部分,效果很好。
控制台错误信息:
Error in Saving user: MongoError: insertDocument :: caused by :: 11000
E11000 duplicate key error index: mydb.users.$email_1 dup key: { :
"sub@xxxxx.nl" }
问题: 如果发生任何数据库错误,我不能假设它总是重复插入错误,所以我需要对此进行检查,以便我可以显示有关重复电子邮件地址的消息或其他有用的消息。
我找不到类似的东西:
if(errorcode == E11000)
message="duplicate email"
else
message="an error occured bla bla"
错误代码存储在err.code
中,因此您可以这样检查:
if (err) {
if (err.code && err.code === 11000) {
message = "duplicate email";
} else {
message = "an error occured bla bla";
}
}