我的开发站点运行良好,“允许读取:如果为真”。在生产中,我进行了以下更改,这应该允许对公共集合进行读取访问。我能够下载数据并且我的前端正确呈现,但我在控制台中收到权限错误。
我使用火焰链接作为 cms,它确实在某些领域放置了引用。我是否还需要对所有引用的集合进行读取权限?
service cloud.firestore {
match /databases/{database}/documents {
match /fl_content/{document} {
allow read: if true
}
match /fl_files/{document} {
allow read: if true
}
match /fl_navigation/{document} {
allow read: if true
}
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
我用这个 Vue 方法接收数据。 数据已收到,我可以访问它。
firestore: {
pageContent: firestore
.collection("fl_content")
.where("_fl_meta_.schema", "==", "aboutPage")
.limit(1),
},
但是控制台显示错误
<块引用>快照侦听器中未捕获的错误:FirebaseError:权限缺失或不足。
有什么帮助吗?
答案 0 :(得分:0)
好的,所以...首先,我认为您不需要对数据库进行匿名访问,即读取:如果为真。最后一句话:
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
为经过身份验证的用户授予对所有数据库的读取访问权限,这应该足够了。规则自上而下匹配,因此您看到的错误可能是因为您读取了有问题的集合,但其中的引用指向另一个集合,该集合此时没有权限,但是,当您到达最后一条语句时,将授予这些权限,因此您正在获取数据。