我在查询文档具有不同权限的集合时遇到问题。
无论如何要对集合执行查询以防止对我无法阅读的文档拒绝权限。如果我一次查询一个,我可以实现这一点。我需要查询集合以返回多个我可能没有权限的文档?我可以保留特定用户有权查询的文档 ID 列表,但我找不到任何有关指定文档数组的文档。
收藏:
Library > { libraryID } > {
Users:{ uid, uid, uid },
title: 'Title of library'
}
规则:
match /Library/{libraryID} {
allow read: if get(/databases/$(database)/documents/Library/$(libraryID)).data.Users[(request.auth.uid)] == true;
}
如果用户 ID 在数据中,则权限受到限制。
这工作正常:
this.afs.collection<Library('Library').doc({libraryID}); // Everything works great
但是我需要集合中的多个项目,所以当我尝试类似下面的示例时如果失败,因为我没有对集合中所有文档的权限:
this.afs.collection<Library('Library'); //PERMISSION DENIED
我希望我可以使用查询来解决这个问题,但是因为它正在查看文档,所以它也失败了:
this.afs.collection<Library('Library',ref => ref.where('Users/'+this._uid, '==', 'true')); // PERMISSION DENIED
所以我希望我可以指定我可以访问的文档(这是我需要的)并将它们返回到一个集合中
this.afs.collection<Library('Library').doc([{libraryID},{libraryID2},{libraryID3}])
如果有人知道实现这一目标的解决方案,或者重构结构以实现这一目标,那将是一个巨大的帮助。