Bk *_*zor 2 firebase angularfire firebase-realtime-database angular
我有一个Object Observable
private Room = AngularFire.database.object(`/Rooms/`);
Run Code Online (Sandbox Code Playgroud)
这个可观察的内部有许多价值,但我有一个孩子叫Empty.这是设置为true空时和false不时.
我只想查询并从observable中获取一个房间.我该怎么做呢?这是我第一次尝试没有查询使用forEach哪个不是我想要使用的东西.
this.Room.subscribe(list => {
list.forEach(snapshot =>{
if(snapshot.Empty == "true")
console.log(snapshot);
})
Run Code Online (Sandbox Code Playgroud)
在AngularFire2中,要使用子值进行查询,您需要使用list:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true
}
});
Run Code Online (Sandbox Code Playgroud)
将所得的可观察到的将发出下项阵列Rooms已Empty设置为true.
要检索单个子项,您可以指定limitToFirst:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
});
Run Code Online (Sandbox Code Playgroud)
结果observable将发出一个数组,其中包含一个条目(如果没有匹配则为空数组).如果发出的条目更改并Empty设置为false,则observable将使用下一个匹配条目(如果有)重新发出.如果您只对第一个匹配条目感兴趣,可以使用RxJS first运算符:
import 'rxjs/add/operator/first';
...
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
})
.first();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6180 次 |
| 最近记录: |