【发布时间】:2020-12-27 02:50:57
【问题描述】:
我正在使用带有 react native 的 Firebase。在我的应用程序中,我允许用户与特定用户或所有用户共享内容:读取、复制或修改权限。 由于 Firebase 没有为查询提供 OR 函数,所以我使用数组来存储 user:permission 组合,这样我就可以使用 array-contains-any 功能进行这样的查询
.where("access", "array-contains-any", [user_id, `${user_id}:R`, `${user_id}:C`, `${user_id}:M`, "All_R", "All_C", "All_M"])
这使我可以查询由 user_id 拥有或共享给 user_id 或共享给具有 R、C 或 M 权限的“全部”的所有内容。
现在我想通过将经过身份验证的用户 ID 与数组中的用户 ID 进行比较,对身份验证规则执行类似的操作(以便只有具有“M”权限的用户可以修改等)。为了做到这一点,它需要类似于“array-contains-any”的功能和用于身份验证规则的字符串连接。
这可能吗,还是我需要做一些不同的事情?
【问题讨论】:
-
您尝试过什么了吗?如果没有,这将是一个很好的起点:firebase.google.com/docs/firestore/security/rules-query
-
@FrankvanPuffelen 我看到了带有字段的身份验证规则示例,但没有看到数组。此外,我需要字符串连接和通配符来匹配数组中的 user_id 和权限。例如如果访问包含 request.auth.uid + ":M",则允许写入。缺少数组和字符串连接的例子让我觉得那样做是不可能的,我可能需要改变我的方法。
标签: javascript firebase google-cloud-firestore firebase-security