Как отфильтровать запрос к базе данных Firebase в реальном времени - PullRequest
0 голосов
/ 25 марта 2020

У меня есть такая структура чата: Data structure

Теперь я хочу заполнить чаты, чтобы пользователь видел только те чаты, где он является участником чата. Как вы можете видеть, у каждого чата есть узел участников, есть идентификатор пользователя из firebase. Как я могу отфильтровать это в моем запросе? Теперь я получаю чаты так:

constructor(props) {
    super(props);
    this.state = { chats: [] };
    this.getChats = this.getChats.bind(this);
  }

  componentDidMount() {
    var _userId = firebase.auth().currentUser.uid;

    this.getChats(_userId);
  }

  getChats = _userId => {
    var readedData = firebase
      .database()
      .ref('chats')
      .orderByKey();
    readedData.once('value', snapshot => {
      this.setState({ chats: snapshot.val() });
      console.log(this.state.chats);
    });
  };

Спасибо за помощь! Новая структура: enter image description here

1 Ответ

1 голос
/ 25 марта 2020

Следующие действия должны помочь:

//....
var uid = 'NGIKTy2......';   //Set the member userId
var readedData = firebase
  .database()
  .ref('chats')
  .orderByChild('members/' + uid)
  .equalTo(true)
//....

Соответствующая документация: https://firebase.google.com/docs/database/web/lists-of-data#filtering_data

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