是否需要唯一的自定义验证器名称?

时间:2016-08-23 09:32:30

标签: sails.js

当我尝试创建新地址时,由于自定义验证器,验证每次都会失败。当我用'return true'替换companyExists内容时,它仍然失败。我发现解决方法是将其中一个文件中的自定义验证器重命名为其他内容,例如companyExists2。自定义验证器似乎不能具有相同的名称。这是Sails.js的预期行为吗?邮递员返回400错误,表示验证失败,JSON响应为:

"invalidAttributes": {
    "company": [
    {
        "rule": "companyExists",
        "message": "\"companyExists\" validation rule failed for input: 1\nSpecifically, it threw an error.  Details:\n undefined"
      }
    ]
 },

在models / Address.js中我有:

module.exports = {
    attributes: {
        street: {
            type: 'string'
        },
        // More attributes
        company: {
            model: 'company',
            required: true,
            unique: true,
            companyExists: true
        }
    },
    types: {
        companyExists: function(companyID) {
            Company.findOne(companyID).exec(function(err, company) {
                if (err || !company) return false;
                return true;
            });
        }
    }
};

在models / Company.js中我有:

module.exports = {
    attributes: {
        name: {
            type: 'string',
            required: true
        },
        // More attributes
        company: {
            model: 'company',
            required: true,
            unique: true,
            companyExists: true
       }
    },

    types: {
        companyExists: function(companyID) {
            Company.findOne(companyID, function (err, company) {
                if (err || !company) return false;
                return true;
            });
        }
    }
};

1 个答案:

答案 0 :(得分:0)

自定义验证规则与内置验证规则合并。这使得它们可以在所有模型中访问。如果您需要多次使用相同的规则,则只需编写一次(在哪种模型中无关紧要)。

您还必须小心不要与现有规则发生冲突。您可以找到完整列表here