只需使用我的第一个登录系统,基于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”之前添加了斜杠,因为节点服务器在尝试“抛出”时立即停止。 我复制/粘贴了返回完成(...)部分,效果很好。
控制台错误消息:
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"
答案 0 :(得分:3)
错误代码存储在err.code
中,因此您可以这样检查:
if (err) {
if (err.code && err.code === 11000) {
message = "duplicate email";
} else {
message = "an error occured bla bla";
}
}