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