如何从猫鼬+ Express中的重复密钥中恢复 [英] how to recover from duplicate key in mongoose + express
本文介绍了如何从猫鼬+ Express中的重复密钥中恢复的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经使用猫鼬创建了一个注册表单并表示3
I've created a signup form using mongoose and express 3
该用户可能已经存在该用户名,在这种情况下,我得到一个err.code 11000(重复密钥).我应该如何处理现有用户?
Its possible the user already exists with that username, in which case I get an err.code 11000 (duplicate key). How should I handle existing users?
这就是我现在正在做的....但是我不确定检查错误代码是最好的方法:
This is what I'm doing now....but I'm not sure checking error code is best way:
user.save(function(err){
if ( err ) {
console.log(err);
console.log(err.code);
//duplicate key
if ( err.code == 11000 ) {
req.flash('error', 'User already exists');
res.redirect('/signup');
return;
}
}
res.locals.user = user;
req.session.user = user;
//res.locals.session = req.session;
res.redirect('/');
});
有更好的方法吗?
推荐答案
我还没有尝试过,但这是我想避免发生错误的方法:
I have not tried this yet, but this is what I'm thinking will avoid causing an error:
//look for existing user first
user.findOne({ username: req.body.username }, function(err, user) {
if ( err ) throw err;
//existing user found, stop registration
if ( user ) {
res.flash('error', "That user already exists");
res.redirect('/signup');
return;
}
//create new user
var user = new User({ username: req.body.username });
user.save(function(err){
if ( err ) throw err;
res.flash('info', "Your account has been created");
res.redirect('/account');
});
});
这篇关于如何从猫鼬+ Express中的重复密钥中恢复的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文