当前位置: 首页 > 知识库问答 >
问题:

带自身条件的Firestore读取规则

东方明亮
2023-03-14

我目前正试图建立一个小型应用程序上的firebase作为它的评估。它看起来很有趣,而且超级高效,但我对firestore规则有一个问题。

我有一个集合(游戏),其对象如下所示:

{
    "name":String,
    "description":String,
    "owners": 
    {
        "uid": String
        "uid2": String
    }
}
service cloud.firestore {
    match /databases/{database}/documents {
        match /games {
            match /{game} {
                allow write: if request.auth != null && request.resource.data.owners[request.auth.uid] == 'ADMIN';
                allow update: if request.auth != null && resource.data.owners[request.auth.uid] == 'ADMIN';
                allow read: if request.auth != null && resource.data.owners[request.auth.uid] == 'ADMIN';
            }
        }
    }
}
resource.data.owners[request.auth.uid] == 'ADMIN'.

允许列表:如果request.auth!=null;

允许获取:if request.auth!=null&&resource.data.owners[request.auth.uid]=='admin';

它没有像预期的那样起作用。我希望它允许我列出的文档,但是如果有一个文档我无法获取,我希望获得“缺少或不足的权限”。我所能做的是列出所有文档,但不直接读取其中一些文档(get规则在试图获取单个文档时有效,但在从集合中列出文档时无效)。

允许获取,列表:if request.auth!=null&&resource.data.owners[request.auth.uid]=='admin';

共有1个答案

步博艺
2023-03-14

我认为创建和更新工作,因为它们是写的一部分,条件1涵盖了它。

 类似资料:
  • 我正试图用IOS和firebase建立一个聊天室。当我在firebase控制台的模拟器中测试时,一切正常,但在IOS应用程序中不工作。 我用的结构是这样的 root/members/room id/auth。uid/userdata root/messages/room_id/messages/message 我用IOS创建了一个新房间 并为该房间添加另一名成员(目前使用硬编码uid): 然后像这

  • null 基本上数据结构如下所示: 问题是,我应该写什么安全规则来允许用户只在他们所属的组中(拥有组密钥)读取、创建和更新数据?同时,如何禁止用户找出其他群组的密钥?

  • 如何从Flatter firestore读取子集合。我正在使用cloud\u firestore。我正在成功地将数据添加到firestore中,但无法检索它(已尝试,但失败)。我想检索名为product Firestore collection的子集合 我试过了,我没有文档ID,因为它是从fiRecovery自动生成的:

  • 我正在创建一个后spring web服务endpoint,并使用一个Object,其中包含大约7-8个String变量和其他变量。在验证请求时,我需要对每个条件进行相同的测试,例如- < li >条件1如果为真,则继续,否则抛出异常。 < li >条件2如果为真,则继续,否则抛出异常。 < li >条件3如果为真,则继续,否则抛出异常 3-4更多业务逻辑验证就像上面一样,有很多if-else,一种

  • 我想使用Ionic 4 Firestore为应用程序提供离线和实时同步功能。 目标部署到本地应用程序(iOS,Android),电子应用程序(Windows和Mac),PWA。 > firestore本地缓存在混合应用中是否持久?firestore缓存使用什么类型的存储?它会像localstorage一样,android/iOS会在存储空间不足时不时删除它。 我正在用下面的代码进行测试,并启用了持