Как отфильтровать запрос к базе данных Firebase в реальном времени

у меня есть такая структура чата: Структура данных

Теперь я хочу заполнить чаты, чтобы пользователь видел только те чаты, где он является участником чата. Как вы можете видеть, у каждого чата есть узел участников, есть идентификатор пользователя из 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);
    });
  };

Спасибо за помощь! Новая структура: введите описание изображения здесь

Всего 1 ответ


Следующее должно сделать трюк:

//....
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


Есть идеи?

10000