【问题标题】:How to make certain data fields readable in a Firestore document如何使 Firestore 文档中的某些数据字段可读
【发布时间】:2021-03-02 20:11:55
【问题描述】:

我的问题

是否可以创建 firebase 规则,以便用户可以 read 文档中的某些数据字段但 not read 同一文档中的其他规则?

我问这个问题是因为我想让用户能够从文档中查询数据,但只能查询文档中的某些字段。

例如

假设您在故事文档中有以下数据:
/stories/{storyid}
{
  title: "A Great Story",
  content: "Once upon a time...",
  author: "some_auth_id",
  published: false
}

在下面的示例中,我尝试创建一个规则,以便用户可以read/query 文档的作者(但不能是文档的其他字段 - 例如标题)。
请注意,我添加了 /stories/{storyid}/{author}

service cloud.firestore {
  match /databases/{database}/documents {
    match /stories/{storyid}/{author} {
      allow read: if request.auth != null;
    }
  }
}

我将如何创建这样的规则?

【问题讨论】:

标签: firebase google-cloud-firestore firebase-security


【解决方案1】:

我猜你的意思是“是否可以创建 firebase 规则,以便用户可以读取文档中的某些数据字段但不能读取同一文档中的其他 字段?”

这实际上是不可能的:Firestore 安全规则适用于文档级别。

一个经典的解决方案是复制另一个集合中的文档,仅包含您希望使其可读的字段子集。

【讨论】:

  • 感谢您的回答,但该字段是一种糟糕的方法,因为那样您会得到重复的数据,这是解决问题的唯一方法吗?
  • "这是解决问题的唯一方法吗?"是的。请注意,在 NoSQL 世界中,复制数据是很常见的,尤其是为了满足这种功能需求。
  • 为什么不根据授权级别对数据进行分类?这可能是个好主意
猜你喜欢
  • 1970-01-01
  • 2022-10-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-27
相关资源
最近更新 更多