【发布时间】:2019-02-20 04:24:13
【问题描述】:
有时,我们不想向最终用户显示整个文档。例如 - 假设我们有 users 集合,每个 user 都有一个 email 属性。我们要做的最后一件事是向彼此显示用户的电子邮件。
所以在 RTDB 中,it was simple,因为它的结构不是集合/文档。
在 Cloud Firestore 上,它并不像 RTDB 那样简单。您无法根据需要过滤文档,如stated in their docs:
在编写查询以检索文档时,请记住,安全规则不是过滤器——查询要么全有,要么全无。
所以我想到了 2 个替代方案:
1。将user 集合拆分为public 和private 子集合。
-
优点 - 您可以对
public和private使用不同的规则。换句话说 - 您可以阻止其他用户查看其他用户的private文档。 - 缺点 - 当您只想获取用户的整个文档时,您必须进行 2 次读取而不是一次,然后合并他们的响应(假设您没有收到任何错误)。
2。在后端处理用户过滤(使用 Admin SDK)。
- 优点 - 这样,我只阅读一个文档,而不必将文档拆分为对象。
- 缺点 - 我还没有找到订阅所需云功能的方法(我想监听变化)。
我知道实现某些目标没有单向的方法,但我想知道是否有更传统的方法来实现我正在尝试做的事情。
【问题讨论】:
标签: firebase google-cloud-firestore