我有一个Object Observable
Empty
这个observable里面有很多值,但我有一个叫true
的孩子。在空时设置为false
,而在空时设置为forEach
。
我只想查询并从observable中获取一个房间。我该怎么做呢?这是我第一次尝试没有使用this.Room.subscribe(list => {
list.forEach(snapshot =>{
if(snapshot.Empty == "true")
console.log(snapshot);
})
的查询,这不是我想要使用的。
java.lang.Math
答案 0 :(得分:8)
在AngularFire2中,要使用子值进行查询,您需要使用list
:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true
}
});
结果observable将在Rooms
下发出Empty
设置为true
的条目数组。
要检索单个孩子,您可以指定limitToFirst
:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
});
结果observable将发出一个数组,其中包含一个条目(如果没有匹配则为空数组)。如果发出的条目发生更改且Empty
设置为false
,则observable将使用下一个匹配条目(如果有)重新发出。如果您只对第一个匹配的条目感兴趣,可以使用RxJS first
运算符:
import 'rxjs/add/operator/first';
...
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
})
.first();