基于属性 bool 值写入访问的 Firestore 规则

Posted

技术标签:

【中文标题】基于属性 bool 值写入访问的 Firestore 规则【英文标题】:Firestore rule to write access based on property bool value 【发布时间】:2020-09-30 13:55:55 【问题描述】:

我有一个像上面这样的结构。我想要实现的是在聊天室用户只能在用户数组中写入这个 uid.isActive == true

rules_version = '2';
service cloud.firestore 
  match /databases/database/documents 
     match /users/userId 
      allow update, delete: if request.auth != null && request.auth.uid == userId;
      allow create, read: if request.auth != null;
    
    match /chats/chatId 
      allow read, write: if request.auth.uid != null;
      match /chat_room/roomId 
        allow read, write: if request.auth.uid != null;
      
    
  

【问题讨论】:

【参考方案1】:

听起来像你想要的:

match /chat_room/roomId 
  allow read, write: if get(/databases/$(database)/documents/chats/$(chatId)).data.users[request.auth.uid].IsActive == true;

因此,当写入 chat_room 文档时,它会加载父文档,然后检查用户是否在其中被标记为活动。

【讨论】:

以上是关于基于属性 bool 值写入访问的 Firestore 规则的主要内容,如果未能解决你的问题,请参考以下文章

FileStream 常用的属性和方法

FileStream常用的属性和方法:

如何配置 ServiceStack Json Serializer 以将 bool 值写入 int 或 byte?

无法将 Number(1,0) 转换为 bool

原始值类型属性的线程安全 - Objective C

JavaScript | 数据属性与访问器属性