所以我有一個 Firestore 資料庫,它具有以下結構,其中角色位于地圖物件中。
/users
userid1
roles = ["user":true]
userid2
roles = ["user":true,"admin":true]
/cars
car1
name = "Car 1"
car2
name = "Car 2"
現在我正在撰寫 Firebase 規則以確保我的資料安全并且只能由管理員訪問。
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
function getRole(role){
return get(/databases/$(database)/documents/users/$(request.auth.uid).data.roles[role])
}
match /cars/{carID} {
allow read: if request.auth !=null;
allow create,update,delete: if getRole('admin') ;
}
我正在嘗試使用以下代碼,但它允許為具有管理員角色的用戶更新/創建。
Firebase 也會告訴我一個警告
“無效型別。收到 [path] 之一。應為 [map] 之一。”
所以我想知道我哪里出錯了
uj5u.com熱心網友回復:
您錯過了下一行中缺少一個右括號,因此.data.roles絕對不包含該檔案的資料:
return get(/databases/$(database)/documents/users/$(request.auth.uid).data.roles[role])
// ^
嘗試重構如下所示的行,以便您可以訪問檔案的資料屬性:
return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.roles[role]
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385219.html
