2
我正試圖創建一個允許用戶在列表上進行協作的應用程序。每個用戶都需要被邀請才能在列表中工作。Firestore數據庫用戶之間共享文檔的規則和結構
我這樣構建了我的數據(鬆散地基於this blog post)。 也可以根據需要更改此結構。
list
list_1:
users:
owner:
[email protected]: true
shared:
[email protected]: true
[email protected]: true
id
name
items:
item_1:
id:
name:
...
我想實現的目標:每個人都應該能夠創建列表。他們的創建者然後成爲創建列表的所有者。 只有「共享」文檔中的所有者和用戶應該能夠讀取和寫入此列表。
我想權限設置應該看起來像這樣。但這是行不通的:
service cloud.firestore {
match /databases/{database}/documents {
match /lists/{listId}/{anything=**} {
allow read, write: if !exists(resource.data.users.owner) ||
resource.data.users.owner == request.auth.token.email ||
request.auth.token.email in resource.data.users.shared
}
}
}
如果使用寫訪問列表這樣的分享,你怎麼了然後查詢一個用戶的所有列表?在這裏他們表示,如果您使用數組,則無法獲得包含類別cat的所有帖子:https://firebase.google.com/docs/firestore/solutions/arrays。你是如何解決這個問題的? –
@TheOddler您說得對,使用此解決方案無法查詢一個用戶的所有列表。爲了使這成爲可能,您可以將用戶的ID存儲爲映射鍵。這也是您發佈的鏈接中的建議。不幸的是,點不允許作爲地圖鍵。所以電子郵件地址將不起作用。還有一個基於地圖的權限已知的問題。請參閱:https://stackoverflow.com/q/46674372/2837489 –
感謝您的答案!這就解釋了爲什麼它不起作用。我雖然在地圖上使用了uid,但仍然沒有蛋糕。感謝您的鏈接!現在我將硬編碼我允許的測試人員,並留意更新。 –