0
模型/ user.js的如何处理node.js中的错误?
var User = module.exports = mongoose.model('User',UserSchema);
module.exports.getUserByUsername = function(username, callback){
var query = {username:username};
User.findOne(query, callback);
}
module.exports.createUser = function(newUser, callback){
User.getUserByUsername(newUser.username,function(err,username){
if(err) throw err;
// username already exists
if(username){
// How can handle this error?
console.log('username already exists');
} else{
bcrypt.hash(newUser.password, 10, function(err,hash){
if(err) throw err;
newUser.password = hash;
newUser.save(callback);
});
}
});
}
路由器/ users.js
router.post('/register',function(req,res,next){
var username = req.body.username;
var password = req.body.password;
var newUser = new User({
username:username,
password:password
});
req.checkBody('username','Username field is required').notEmpty();
req.checkBody('password','Password field is required').notEmpty();
var errors = req.validationErrors();
if(errors){
res.render('register',{
errors: errors,
username: username,
password: password
});
} else{
User.createUser(newUser,function(err,user){
if(err) throw err;
req.flash('success','You are now registered and may log in');
res.location('/');
res.redirect('/');
});
}
});
上述码是关于用户的注册代码。
在模型/ user.js的
我做了一个函数“的createUser”是获得新的用户,并发现其是否已经存在。但是,我不知道如何抛出自定义错误,“用户已经存在”..
我该怎么办?
我想是这样的:
// username already exists
if(username) {
callback(new Error('username already exists'));
}
,但它没有工作!
要抛出错误消息“用户名已存在”,我该怎么办?
谢谢您的阅读。 :)
p.s) models/user.js - > createUser函数被定义。
routes/users.js - > createUser函数被附加到工作。
为什么你会抛出一个错误,如果用户已经存在,不会告发你宁愿只是向客户端返回一些告诉用户用户名存在的东西吗? – adeneo