Правила Firestore onSnapshot выдают ошибку при удалении документа - PullRequest
0 голосов
/ 03 мая 2020

У меня проблема с наблюдателем Firestore и связанными с ним правилами. Я пытаюсь иметь правила, которые позволяют пользователю видеть только приглашения, содержащие адрес электронной почты пользователя. Однако, если я удаляю документ из коллекции, наблюдатель снимка выдает ошибку Uncaught Error in onSnapshot: FirebaseError: Null value error. for 'get' @ L92.

Вот мои правила:

 match /invites/{inviteID} {

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

      function isUserInvite() {
        return request.auth.token.email != null &&
        request.auth.token.email == resource.data.user_email;
      }

      allow read: if isSignedIn() && isUserInvite();
      allow write: if true;

}

А вот мой слушатель.

firebase.firestore()
.collection("invites")
.where(`user_email`, '==', myUserEmail) // this would be the users email
.onSnapshot((snapshot) => {

  snapshot.forEach( doc => {
    console.log(doc.id, doc.data())
  })

})

Работает для просмотра новых документов, но не удаляется при удалении документа. Следующий код заставляет наблюдателя выдавать ошибку.

// creates a new invite and the snapshot listener informs me 
await firebase.firestore()
.collection('invites')
.doc("invite_1")
.set({
  user_email: someUserEmail, // use the users email here 
  date_added: firebase.firestore.FieldValue.serverTimestamp()
})

// deletes the invite, but the snapshot throws an error
await firebase.firestore()
.doc(`invites/invite_1`)
.delete()

ОБНОВЛЕНИЕ

Я обнаружил, что это происходит только в эмуляторе firestore, а не в производстве. И эмулятор, и производство имеют одинаковые правила.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...