node.js - sails.js - 独特的模型属性检查

标签 node.js validation sails.js

项目: 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/

相关文章:

string - Swift 表单验证 - 检查是否输入了 Int 或 String

node.js - Sails 在大型结果集上无法返回或出错

mysql - 从 ec2 中的 sails 到 rds 中的 MySQL 的连接出现握手不活动超时错误

javascript - 缓存异步函数的结果,并将其传递给 Async.js 中的下一个函数

node.js - Mongoose db.stats() 等效项

javascript - 在 Node.js 应用程序中使用 Stomp.js 自动重新连接

c# - 在 Windows 窗体中进行验证的最佳方法是什么

javascript - 如何在 JavaScript 中将 MSSQL 日期时间整数转换为 YYYY/mm/DD 格式

ios - Xcode 6 : "Archive validation failed with error" "Invalid image path"

sails.js - Waterline/Sails.js/Mongo 如何使用 AND 条件查询一个文件?