【发布时间】:2021-07-03 10:16:28
【问题描述】:
在 Firestore 我有 2 个集合
一个用户集合和一个周期集合。我的周期集合需要一个规则:只有创建周期的用户才能读写。
这是我尝试但没有成功
service cloud.firestore {
match /databases/{database}/documents {
function userDoc() {
return /databases/$(database)/documents/users/$(request.auth.uid);
}
match /users/{userId} {
allow read: if true;
allow create, update: if request.auth.uid == userId;
}
match /periods/{id} {
allow read : if userDoc() == request.resource.data.user;
allow write : if userDoc() == request.resource.data.user;
}
}
}
【问题讨论】:
-
您可以仅将用户 UID 存储在期间文档中并使用
request.resource.data.user === request.auth.uid,还是我遗漏了什么? -
我试试这个。它不起作用。期间 user_id 等于 users/PdqJAiVsUDOQfCT5GA3jgOvQZQT2。查看我的示例数据
-
那是因为
request.auth.uid只是PdqJAiVsUDOQfCT5GA3jgOvQZQT2而不是/users前缀。您可以添加另一个字段user_uid并尝试一下吗? -
我正在尝试使用 userDoc() 函数获取前缀 users/ 但它不起作用;-(
-
我只是试试这个:"users/${request.auth.uid}" == request.resource.data.user_id;但它没有用....
标签: firebase google-cloud-firestore firebase-security