项目: 基于websockets的API(socket.io)
我的目标: 在存储之前检查用户名是否唯一
我的解决方案: 覆盖默认的createUser函数
我的问题: 调用User:create不进行验证
用户控制器中的代码:
create: function(req, res, next){
User.findByUsername(req.param('username')).then(function(usr){
if(usr !='')
{
// username already taken
return res.json({'type':'validationError','errorMessage':'Username already taken','usr':usr});
}
else{
// username is unique
User.create( req.params.all(),function userCreated(err,user){
// try to create user
if(err){
console.log(err);
return res.json({
'type':'validationError',
'errorMessage':err}
);
}
res.json(user);
});
}
},
function(err){
// error finding user by username
}
);
答案 0 :(得分:2)
我认为以稍微不同的方式解决问题可能会让您更容易。您可以在模型中处理验证:
attributes: {
username: {
type: 'string',
unique: true
}
}
然后,在不覆盖控制器中的任何内容的情况下,您应该能够尝试通过websocket创建用户,并处理在您尝试使用非唯一用户名时返回的错误。