Firebase有一些保留字符:
., $, #, [, ], /
如何阻止这些字符在安全规则中添加到我的数据库中?
答案 0 :(得分:1)
将.validate
与matches()
一起使用。 matches()
接受正则表达式。 contains()
检查字符串是否包含指定的值。
如果您正在编写如下对象:{"post": "he.lo"}
".validate": "!(newData.child('post').val().matches(/[.$\/#]/) || newData.child('post').val().contains(']') || newData.child('post').val().contains('['))"
如果你只是写一个字符串:“he.lo”
".validate": "!(newData.val().matches(/[.$\/#]/) || newData.val().contains(']') || newData.val().contains('['))"
我尝试了一段时间来包含“[”和“]”,但Firebase不喜欢它们,这就是我添加contains()
方法的原因。
这些规则将用于检查值,正如@Frank所说,不是键。
答案 1 :(得分:0)
这些字符不能在数据库键中使用,但可以在数据库值中使用。
Firebase数据库会自动拒绝在密钥中出现此类字符的写入操作,您无需为此编写任何规则。