在我基于 Firestore 的应用程序中,我使用以下查询来检索一些数据:
FirebaseFirestore.getInstance().collection("events").document( eventId ).collection("instances").get().addOnCompleteListener( .... )
Run Code Online (Sandbox Code Playgroud)
这给出了一个权限被拒绝的堆栈跟踪:FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions.
我的规则的相关部分如下:
match /events/{eventId} {
allow create: if isCurrentUser( request.resource.data.owner );
allow read: if isOwner(eventId) || isAnAdmin( eventId );
allow update: if isOwner( eventId ) || isAtLeastEventAdmin( eventId );
allow delete: if isOwner( eventId );
match /instances/{instanceId} {
allow read: if isOwner(eventId) || isAnAdmin( eventId );
allow write: if isOwner( eventId ) || isAtLeastInstanceAdmin( eventId );
}
}
Run Code Online (Sandbox Code Playgroud)
在控制台模拟器中,对某个实例的查询工作正常,但是一旦我对“实例”集合启动查询,我就会遇到这个问题(这是我无法在模拟器中模拟的)。请注意,isOwner( eventId )在这种情况下返回 true。
如何为实例启用查询?在我看来,“读取”权限应该足以允许查询吗?