javascript 我的firestore安全规则获取多个文档不工作

pdkcd3nj  于 2023-01-16  发布在  Java
关注(0)|答案(1)|浏览(78)

我有个规矩

allow read: if request.auth.uid == resource.data.author

它不允许我用getDocs获取多个文档。
但它允许使用getDoc获取文档。
PS:我用这个来检索文档

const col = collection(db, collectionPath)
const documents = await getDocs(col)

得到了这个错误
Firebase错误:缺少权限或权限不足。
但这起作用了

const col = collection(db, collectionPath)
const document = await getDoc(doc(col,documentID))
fzsnzjdm

fzsnzjdm1#

您将安全规则与过滤器混淆了,您问题中的安全规则只允许所有文档满足该规则的查询通过,因此如果您尝试使用getDocs(collection)获取整个集合,它不会返回任何结果。
相反,请尝试使用Author字段查询数据库,如本答案中的方法,该方法使用whereEqualTo()按字段筛选结果:

const col = firestore.collection(db, collectionPath).whereEqualTo("author", author)
const documents = await getDocs(col)

相关问题