首页 > 解决方案 > 如何使 Firestore 文档中的某些数据字段可读

问题描述

我的问题

是否可以创建 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;
    }
  }
}

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

标签: firebasegoogle-cloud-firestorefirebase-security

解决方案


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

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

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


推荐阅读