Получение значения базы данных Firebase в реальном времени ребенком - PullRequest
0 голосов
/ 21 июня 2020

Я разрабатываю приложение, в котором есть страница чата. Я использую базу данных Firebase в реальном времени и мою структуру чата следующим образом: введите описание изображения здесь

Я получаю новые сообщения, как показано ниже:

fireBuddyChats = firebase.database().ref('/buddychats');
this.fireBuddyChats.child(this.currentUserId)
        .child(this.buddy.uid)
        .orderByKey()
        .limitToLast(topMsgCount)
        .on('value', (snapshot) => {          
          this.buddyMessages = [];
          let temp = snapshot.val();
          for(var tempKey in temp) {
            this.buddyMessages.push(temp[tempKey]);
          }                            
        this.events.publish('newmessage');
    }

Я слушаю событие 'newmessage', чтобы показать новое сообщение на странице чата. Проблема в следующем: когда я с кем-то болтаю, если другой друг отправляет какое-либо сообщение, запускается триггер базы данных (я упоминал выше), и на странице чата отображаются сообщения другого друга. Я думаю, это не должно срабатывать, потому что "this.buddy.uid" другой. Что мне не хватает? Есть предложения?

1 Ответ

1 голос
/ 22 июня 2020

Возможно, чтобы предотвратить это, вы можете добавить выше условный оператор, чтобы проверить, действительно ли пользователь (с которым разговаривает текущий пользователь) имеет uid "this.buddy.uid". Так что, возможно, для кода вы могли бы включить где-нибудь:

if (socket.uid == this.buddy.uid).then

Это должно помешать другим пользователям присоединяться / добавлять себя к разговору с базой данных в реальном времени, поскольку он постоянно проверяет, постоянно ли пользователь.

Надеюсь, это поможет.

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