Почему этот Firebase Query работает, а другой нет - PullRequest
0 голосов
/ 02 мая 2020

Когда я запускаю этот запрос

self.db.collection("strokedata").whereField("uid", isEqualTo: coachid!).addSnapshotListener { (querySnapshot, err) in

С этими правилами

  rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {

       function isSignedIn() {
              return request.auth != null;
            }

          match /strokedata/{document} {

          allow write: if isSignedIn() && document == request.auth.uid;
          allow read: if document == request.auth.uid || request.auth.uid == resource.data.uid; 

          }

         match /users/{document} {

          allow create: if request.auth.uid != null;
          allow read: if request.auth != null;
          allow write: if document == request.auth.uid; 
      }
    }
  }

Код текста uid в resource.data.uid становится зеленым, и запрос работает.

Тем не менее, когда я запускаю этот запрос

self.db.collection("strokedata").whereField("coachuid", isEqualTo: coachid!).addSnapshotListener { (querySnapshot, err) in

С этими правилами он не работает, код coachuid не становится зеленым в правилах в этом случае.

  rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {

       function isSignedIn() {
              return request.auth != null;
            }

          match /strokedata/{document} {

          allow write: if isSignedIn() && document == request.auth.uid;
          allow read: if document == request.auth.uid || request.auth.uid == resource.data.coachuid; 

          }

         match /users/{document} {

          allow create: if request.auth.uid != null;
          allow read: if request.auth != null;
          allow write: if document == request.auth.uid; 
      }
    }
  }

У меня есть кое-что, что работает, но мне любопытно, почему запрос coachuid не становится зеленым и правила каждый раз не выполняются.

...