代码之家  ›  专栏  ›  技术社区  ›  pdr

嵌套集合的Firestore安全规则

  •  0
  • pdr  · 技术社区  · 8 年前

    我的安全规则如下:

    match /xxx/{yyy}{
        allow read: if resource.data.zzzId == request.auth.uid;
    }    
    match /xxx/{yyy}/aaa/{bbb}{
        allow read: if resource.data.zzzId == request.auth.uid;
    }
    

    现场 zzzId 在两个 yyy bbb 文档和具有相同的值。现在,在Android应用程序中,我有两个 FirestoreRecyclerAdapters ,一个用于中的文档 xxx 集合和内部集合,用于 aaa 收集第一个适配器显示数据,而另一个适配器出现故障 InsufficientPermisions 错误

    我对安全规则进行了一些盲测试,并验证了 bbb公司 文档已 request.auth.uid 设置,当我硬编码要与之进行比较的值时,它会起作用。所以一定是出了什么问题 resource.data.zzzId part,即,它在规则中获取了错误的值(或者可能根本没有值)。

    有人能解释一下吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   pdr    8 年前

    事实证明,这是查询子集合中数据的错误方式。当我添加 whereEqualTo 条款 zzzId field,一切正常。Firebase文档实际上在某处提到了它,但我现在找不到它。