验证多列属性Firebase数据库规则

时间:2017-06-06 20:35:43

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

我在这个结构中有一个多列索引属性filter_active

"books": {
   "435085rfddsfiou4r80": {
        "name": "Harry Potter 1"
   }
}

"review": {
   "540398fsdo9043": {
        "filter_active": "true|435085rfddsfiou4r80|false"
        "active": true,
        "archived": false,
        "book_id": "435085rfddsfiou4r80"
        "review": "good book"
   }
}

现在我想使用安全规则来验证filter_active属性。我需要检查书籍节点中是否存在该书。此外,过滤器中的图书ID必须等于评论对象中的book_id

Firebase数据库规则中没有拆分方法。另外,我试图创建一个动态正则表达式,但我相信这是不可能的。

无论如何我可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果filter_active中不需要的文字总是少量已知字词或字符,则可以通过重复使用replace()来消除它们。例如,要删除truefalse|

newData.child('filter_active').val().replace('true','')
    .replace('false','').replace('|','')

然后,您可以使用生成的密钥检查是否存在图书:

root.child('books').child(newData.child('filter_active').val()
        .replace('true','').replace('false','').replace('|','')).exists()