Firebase RTD递归安全规则

Firebase RTD递归安全规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,在我的Firebase实时数据库中,我有一个注释和回复结构,如下所示 { "post-comments": { "$postId": { "pushKey1": { "uid": "uid1", "text": "comment 1", "replies": {

在我的Firebase实时数据库中,我有一个注释和回复结构,如下所示

{
  "post-comments": {
    "$postId": {
      "pushKey1": {
        "uid": "uid1",
        "text": "comment 1",
        "replies": {
          "pushKey2": {
            "uid": "uid2",
            "text": "reply 1",
            "replies": {
               ... and so on
            }
          }
        }
      }
    }
  }
}
所有评论都将公开阅读。我想编写一个递归安全规则(因为可以有任意数量的嵌套
“回复”
字段),它只允许用户:

  • 如果新数据具有匹配的
    auth.uid
    uid
    字段,则按此按钮
  • 如果
    auth.uid
    与现有
    uid
    字段匹配,则更新注释/回复
  • 删除将通过软删除进行处理,因此本质上与更新相同

这可能吗?我在谷歌上搜索了一下,这个链接作为搜索结果出现了,但是页面的那个部分似乎已经不存在了。这个功能还存在吗?还是有其他方法可以做到这一点?如果重要的话,我会将it客户端与React一起使用。

从新开发的实时数据库的开发人员那里看到这样的层次结构是一种常见的模式,因为它支持层次结构,所以想要使用它们是有意义的

但是没有办法定义这样的递归安全规则

在成熟的Firebase应用程序中看到递归数据模型也是相当少见的,这正是因为它使访问控制变得困难


我建议将注释存储在一个平面列表中,其中包含一个
parentId
。给顶级注释一个
parentId
none
或任何其他固定值,您可以查询所有您需要的内容。

该文档页指的是Firestore,它的规则系统与实时数据库不同。我明白了,这是有意义的。非常感谢。(在这里大声思考)我最初担心在平面结构中分页会很困难,但我可以轻松构造一个查询来查找N个最近的注释,其中的parentId==null。从那里,我可以使用
parentId
字段进行另一个查询以查找回复,而不是一次加载整个前N个注释线程。