3

项目:基于 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
        }
    );
4

1 回答 1

2

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

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

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

于 2015-01-23T17:12:15.790 回答