Firebase验证规则正则表达式无效

时间:2017-01-06 23:28:36

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

我无法在Firebase模拟器中使用它,我不明白为什么。我正在制作一个"最喜欢的"我的页面上的按钮,带有一个计数器,可以跟踪它被收藏的次数。我想将金额存储在firebase数据库中。所以这是我的规则:

{
  "rules": {
    "favorited": {
      ".validate": "newData.isNumber() && newData.val().matches(/[0-9]/) && newData.val().length < 10",
      ".read": true,
      ".write": true
    }
  }
}

写入应该是一个整数,只能包含0到9且少于10个字符。

我已在以下路径中使用以下JSON数据对其进行了测试:

/favorited/

-

{
  "foo": 123
}

这会在验证时出现写入错误。我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题是你在数字上使用正则表达式,而不是字符串。数字也没有length属性。

来自documentation

  

正则表达式文字可用于验证客户端提供的字符串。使用string.matches(/pattern/)来测试字符串是否符合正则表达式模式。

您可以使用:

newData.isNumber() && newData.val() < 1000000000

由于1000000000是最小的数字,其中包含10位数字。