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

时间:2017-06-15 16:12:48

标签: validation firebase firebase-realtime-database firebase-security

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

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

这就是我的规则:

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

所以当我放置一个像这样{"created":"123456789"}的字符串值的对象时,验证工作正常。但是当我放置一个数值为{"created":123456789}的对象时,验证失败。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:6)

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

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

可以验证的内容是某些内容是整数。我能提出的最简单的方法是:

".validate":"newData.isNumber() && newData.val() % 1 === 0.0" 

接受11.0,但会拒绝1.1