Firestore数据库规则:查询的权限
我试图查询基于字段的文档。
由于这个领域,我有权限阅读这个文件:
match /lists/{list=**} { allow read: if resource.data.name == 'MyDocument' }
如果我试图直接检索这个文档,它是成功的(使用Kotlin的Android客户端):
val doc = db.document("lists/acaa0247-eccd-4ff0-b986-7f8b6187e45f") doc.get().addOnCompleteListener { task -> if (task.isSuccessful) { // here it works println("This Works") } else { println("Failed") } }
但是当我查询它(或只是试图获取集合中的所有文档),我得到一个权限被拒绝的异常:
val collection = db.collection("lists") collection.get().addOnCompleteListener(activity, { task -> if (task.isSuccessful) { println("Should work") } else { // Here is isn't working println("Failed") } })
当我允许每个人阅读/lists
下的所有文件时,这个查询是有效的。
match /lists/{list=**} { allow read: if request.auth != null }
所以我的问题是:用户是否需要阅读所有在查询中搜索的文档? 在我的情况下,这将意味着所有在/lists
所有字段的文件?
所以我的问题是:用户是否需要阅读所有在查询中搜索的文档?
是。
为了避免在查询列表时出现错误,在客户端上,您可以使用where子句只读取您有权读取的文档。