在 Firestore 中,我有一个拥有所有者的项目集合。
所有者可以是用户,应该允许他阅读他的文档。
使用 userId
你可以这样做:
allow read, write: if resource.data.userId == request.auth.uid;
但是对于 owner
引用字段,似乎没有涉及安全规则的文档。
我尝试了这个安全规则:
allow read, write: if resource.data.owner == 'users/$(request.auth.uid)';
并像这样查询:
const owner = this.db.collection('/users').doc(auth.uid).ref;
const collection = this.db.collection('/items',
(ref) => ref.where('owner', '==', owner)
);
但我仍然遇到权限缺失或不足的情况。
最佳答案
引用文献被视为 paths在安全规则中,因此您可以将其与
function checkUser() {
return request.resource.data.userReference == /databases/$(database)/documents/users/$(request.auth.uid);
}
使用前面带有 databases/$(database)/documents
的完整路径非常重要。在这种情况下,我有一个名为 users
的集合,每个用户 id 都是他们的 uid
(看起来您也在这样做)
关于基于引用数据类型的 Firebase Firestore 安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49206087/