项目: API over websockets (socket.io)
我的目标: 在存储之前检查用户名是否唯一
我的解决方案: 覆盖默认的 createUser 函数
我的问题: 调用 User:create 不进行验证
用户 Controller 中的代码:
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
}
);
最佳答案
我相信以稍微不同的方式解决问题可能会让您更轻松地解决这个问题。您可以在模型中处理验证:
attributes: {
username: {
type: 'string',
unique: true
}
}
然后,无需覆盖 Controller 中的任何内容,您应该能够尝试通过 websocket 创建用户,并处理在您尝试使用非唯一用户名时返回的错误。
关于node.js - sails.js - 独特的模型属性检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18837481/