Как перестать слушать прослушивание сообщений чата, когда пользователи выходят из Firebase - PullRequest
0 голосов
/ 10 июля 2019

Я создаю мобильное приложение для чата с базой данных Firebase в реальном времени и реагирую на нативные.Это приложение всегда прослушивает получение новых сообщений чата из базы данных Firebase.

Но я вижу следующее сообщение об ошибке, когда нажимаю кнопку sign out на экране чата, потому что приложение в фоновом режиме всегда пытается получить новые сообщения дажеЯ вышел из системы, и у меня нет роли для чтения и записи сообщений чата.

Это сообщение об ошибке.

console.error: "Uncaught Error in onSnapshot:", {"code": "permission-denied", "name": "FirebaseError" }

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

:
this.firebase.firestore.collection("chat").doc(" chatId").collection("messages")
          .where('counter', '>', this_.messageCounter - Const.chatPagingMessageCount).orderBy('counter', 'asc')
          .onSnapshot(function (querySnapshot) {
:

Я бы хотел, чтобы пользователи выходили без этой ошибки.

1 Ответ

1 голос
/ 10 июля 2019

Вы должны удалить слушателя, когда пользователь вышел из чата.Вы можете использовать метод жизненного цикла componentWillUnmount или выйти для этого.

https://firebase.google.com/docs/firestore/query-data/listen#detach_a_listener

componentDidMount () {
  this._listenToMessages();
}

componentWillUnmount () {
  this.chatListener();
}

_listenToMessages = () => {
  this.chatListener = 
    this.firebase.firestore.collection("chat").doc("chatId").collection("messages")
      .where('counter', '>', this_.messageCounter - 
      Const.chatPagingMessageCount).orderBy('counter', 'asc')
      .onSnapshot(function (querySnapshot) {
        ...
      }
}
...