使用回调函数捕获错误
Catch the error with the callback function
我编写中间件是为了使用外部代码来管理用户帐户。当我创建一个新帐户时,我按照以下代码使用管理器的相关功能:
.post(function(req,res,next){
UsersManager.createUser(req.body.username,req.body.password,function(err){
if(err){
res.json({
success: false,
message: 'User NOT created',
});
}else{
res.json({
success: true,
message: 'User '+req.body.username+' created',
});
}
});
});
但是,例如,当用户已经存在时,我无法捕捉到错误。我的 UsersManager.createUser
代码如下:
createUser: function(username,password,callback){
var new_user = new User({
username: username,
password: password
});
User.findOne({username:username},function(err,user){
if(!user) new_user.save(callback);
else throw err;
});
}
错误是:
Error: Uncaught, unspecified "error" event. (null)
我应该如何处理最后一行 else throw err
才能被回调捕获?您对我处理用户管理的代码结构有何看法?
我用下面的代码解决了:
createUser: function(username,password,callback){
var new_user = new User({
username: username,
password: password
});
User.findOne({username:username},function(err,user){
if(!user) new_user.save(callback);
else{
var err = 1;
callback(err);
}
});
}
我编写中间件是为了使用外部代码来管理用户帐户。当我创建一个新帐户时,我按照以下代码使用管理器的相关功能:
.post(function(req,res,next){
UsersManager.createUser(req.body.username,req.body.password,function(err){
if(err){
res.json({
success: false,
message: 'User NOT created',
});
}else{
res.json({
success: true,
message: 'User '+req.body.username+' created',
});
}
});
});
但是,例如,当用户已经存在时,我无法捕捉到错误。我的 UsersManager.createUser
代码如下:
createUser: function(username,password,callback){
var new_user = new User({
username: username,
password: password
});
User.findOne({username:username},function(err,user){
if(!user) new_user.save(callback);
else throw err;
});
}
错误是:
Error: Uncaught, unspecified "error" event. (null)
我应该如何处理最后一行 else throw err
才能被回调捕获?您对我处理用户管理的代码结构有何看法?
我用下面的代码解决了:
createUser: function(username,password,callback){
var new_user = new User({
username: username,
password: password
});
User.findOne({username:username},function(err,user){
if(!user) new_user.save(callback);
else{
var err = 1;
callback(err);
}
});
}