Sails.js - 检查唯一模型属性

3

项目: 基于WebSockets(socket.io)的API

我的目标: 在存储用户名之前检查其是否唯一

我的解决方案: 覆盖默认的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
        }
    );
1个回答

2

我相信以略微不同的方式来解决问题可能会让你更容易。您可以在模型中处理验证:

attributes: {
  username: {
    type: 'string',
    unique: true
  }
}

然后,不需要在控制器中覆盖任何内容,您应该能够通过websocket尝试创建用户,并处理如果您尝试使用非唯一用户名返回的错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接