【发布时间】:2021-01-01 23:31:54
【问题描述】:
这是我的规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /Users/{id}{
allow read : if (request.auth.uid == resource.data.uid);
allow write : if false;
}
match /Class/{id}{
allow read : if (request.auth.uid == resource.data.instructor.uid || (request.auth.uid == resource.data.admin.uid));
allow write : if false;
}
match /Class/{id}/Topics/{doc} {
allow read:
if request.auth.uid == resource.data.topicOwnerUID || request.auth.uid == resource.data.adminUID
allow write: if false;
}
}
}
除了尝试从 Class/docs/Topics/docs 中提取所有主题外,一切都很好。我使用 getDocuments 并尝试使用 limit(50) 获取所有文档,我现在只有 1 个主题,但我也尝试将限制设置为 1,但仍然无法正常工作。在每个主题文档中,都有一个 adminUID 和一个 topicOwnerUID 字段。当所有者尝试提取所有文档时,我收到一个错误:“错误:权限缺失或不足。”。我检查了所有必填字段,这应该允许。
编辑:似乎如果我删除 .limit 并仅获取具有特定 docID 的单个文档,它就可以工作。但这不是我想要的:/。也许我必须将子集合变成自己的集合。
Edit2:即使它不是子集合也不起作用。完全失去了rn。看起来唯一的方法是单独获取每个文档,但这会破坏lazyLoading。 Firebase 落后了。将切换到另一个数据库。
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security