С базой данных 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();
}