相关疑难解决方法(0)

应用程序中的 Firestore 查询授予权限被拒绝,而模拟器工作正常

在我基于 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。

如何为实例启用查询?在我看来,“读取”权限应该足以允许查询吗?

firebase firebase-security google-cloud-firestore

4
推荐指数
1
解决办法
1720
查看次数