запрос angularfirebase2, где ключ равен значению - PullRequest
0 голосов
/ 18 января 2019

Я даю выстрел в firebase, преобразовывая существующую базу данных в firebase. Как выбрать список, в котором значение ключа равно определенному значению?

getAllUsers() {
    return this.fireBase.list(
        '/users',
        ref => ref
            .orderByChild('last_name')
            // active = true
    ).valueChanges();
}

1 Ответ

0 голосов
/ 18 января 2019

С базой данных Firebase Realtime вы не можете использовать orderBy() в одном поле, а затем использовать equalTo() в другом поле. И вы не можете использовать два разных orderBy().

Это подробно / объяснено в документации, здесь (angularfire2 ) и здесь («стандартный» Javascript SDK).

Однако вы можете использовать составное значение, например active_lastname, с запросом, подобным следующему:

  var database = firebase.database();
  database
    .ref('users')
    .orderByChild('composedValue')
    .startAt('true_')
    .endAt('true_\uf8ff')
    .once('value', function(snapshot) {
      snapshot.forEach(function(childSnapshot) {
        var childKey = childSnapshot.key;
        var childData = childSnapshot.val();
        console.log(childKey);
        console.log(childData);
      });
    });

Вы составляли значения будут выглядеть так:

true_Obama
true_Bush
false_Carter
....

Так что для angularFire2, основываясь на вашем коде, это будет:

getAllUsers() {
    return this.fireBase.list(
        '/users',
        ref => ref
            .orderByChild('composedValue')
            .startAt('true')
            .endAt('true\uf8ff')
    ).valueChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...