簡體   English   中英

Firestore 規則:檢查數組中是否存在某個值

[英]Firestore rules : check the existence of a value in array

我想只給members組里的用戶讀寫權限,不知道為什么不行?

這是 firestore 中的規則:

    rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
  match /Users/{uid} {
  allow write: if request.auth != null && request.auth.uid == uid;
  allow read : if request.auth != null;
  }
    
    match /GroupChat/{document=**} {
      allow read,create,update: if request.auth != null && request.auth.uid in request.resource.data.Members;
        
    }
  }
}

這是我的數據庫的屏幕來自數據庫的屏幕

查詢:

FirebaseFirestore.instance
          .collection("GroupChat")
          .where("Members",
              arrayContains: FirebaseAuth.instance.currentUser!.uid)
          .snapshots(),

當我想在我的APP中顯示信息時,我得到這個錯誤:

W/Firestore(14600):(24.0.0)[Firestore]:偵聽查詢(target=Query(GroupChat,其中成員 array_contains 0FQhApDgWMVNTpOiDewF3qJX7IA3 按名稱排序);limitType=LIMIT_TO_FIRST)失敗:狀態{code=PERMISSION_DENIED,描述=丟失或權限不足。, cause=null}

文檔中所述,

resource變量指的是請求的文檔, resource.data是文檔中存儲的所有字段和值的 map。

但是, request.resource.data包含在更新/寫入操作中添加到文檔中的數據。 你應該使用resource.data因為你想檢查現有數據。

match /GroupChat/{document=**} {
  allow read,create,update: if request.auth != null && request.auth.uid in resource.data.Members;        
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM