我的模型属性
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,
}
在这种情况下,我们是否需要手动验证整数和浮点数?
答案 0 :(得分:2)
Official Sails Doc for Validation
在文档中,您可以看到整数验证检查整数以及字符串以进行验证。
根据我在验证方面的经验
要严格验证使用int
,decimal
代替integer
,float
您的场景问题如下。
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;
}
}
};
因此,对于每个模型,您需要编写自定义验证器。 并且
我想现在有办法编写全局自定义验证 规则,以便您可以通过编写验证来对不同模型的属性应用验证 全局。