Sails Waterline Model属性验证类型'整数',' float'失败

时间:2016-03-30 05:14:10

标签: sails.js waterline parseint

我的模型属性

per: { type: 'float', required: true }, typeid: { type: 'integer', required: true },

我的输入

{ per: '5GH', typeid: '6SD', }

我希望这会失败,并会收到类似

的错误消息

typeid: [ { rule: 'integer', message: 'undefined should be a integer

但验证后验证o / p

{ per: 5, typeid: 6, }

在这种情况下,我们是否需要手动验证整数和浮点数?

1 个答案:

答案 0 :(得分:2)

Official Sails Doc for Validation

在文档中,您可以看到整数验证检查整数以及字符串以进行验证。

  

根据我在验证方面的经验

要严格验证使用intdecimal代替integerfloat

  

您的场景问题如下。

a=5     =>integer in a 
a="5"   =>string but the integer value is 5 
a="5a4" =>string but integer value is 5 not 54

a="a5"  =>string and no integer value.Only this case will fail on validation rule

如果您想根据自定义规则严格验证属性,则可以在模型中添加自定义验证规则。请参阅以下代码:

module.exports = {
    attributes: {
        name: {
            type:'string'
        },
        mail: {
            type:'string',
            defaultsTo:'a'
        },
        age:{
            type:'string',
            isInt:true
        }
    },
    types:{
        isInt:function(value){
            console.log(value);
            if(typeof value==='number' && value=== Math.floor(value)){
                console.log('value is a number');
                return true;
            }
            if(!isNaN(1*value)){
                console.log(value);
                return true;
            }
            return false;
        }
    }
};

因此,对于每个模型,您需要编写自定义验证器。 并且

  

我想现在有办法编写全局自定义验证   规则,以便您可以通过编写验证来对不同模型的属性应用验证   全局。

enter image description here

enter image description here