如何验证该值是与Firebase规则的整数

dzi*_*kyy 4 validation firebase firebase-security firebase-realtime-database

我正在尝试确保firebase中某个对象的某个字段是整数而不是小数.有一个方法isNumber()但它返回true wheter值是一个整数或小数.

我试图用正则表达式检查一个值,但由于某种原因它只适用于引号内的值,即字符串.

这是我的规则的样子:

"$item_id":{
    "created":{
    ".validate":"newData.val().matches(/^[0-9]+$/)"
    }
}  
Run Code Online (Sandbox Code Playgroud)

所以当我把一个像字符串值的对象放在这样的{"created":"123456789"}验证工作正常.但是当我把一个带有数值{"created":123456789}验证的对象失败时.

有没有办法做到这一点?

Fra*_*len 6

您不能使用正则表达式来验证数字,因为正则表达式匹配字符串中的模式.

您也无法真正验证某些内容是否为整数,因为JavaScript没有单独的整数与浮点类型.它们都只是浮点数.

可以验证的是,某些东西是整数.我能想到的最简单的方法是:

".validate":"newData.isNumber() && newData.val() % 1 === 0.0" 
Run Code Online (Sandbox Code Playgroud)

这种接受11.0,但会拒绝1.1.