使用 AngularFire2 查询 Firebase 只得到一个 object
Query Firebase with AngularFire2 query getting only one object
我有一个 Object Observable
private Room = AngularFire.database.object(`/Rooms/`);
这个 observable 里面有很多值,但我有一个 child 叫做 Empty
。空时为 true
,空时为 false
。
我只想查询并从 observable 中取回一个房间。我该怎么做呢?这是我第一次尝试使用 forEach
进行查询,这不是我想要使用的东西。
this.Room.subscribe(list => {
list.forEach(snapshot =>{
if(snapshot.Empty == "true")
console.log(snapshot);
})
在 AngularFire2 中,要使用 child 值进行查询,您需要使用 list
:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true
}
});
生成的 observable 将在 Rooms
下发出一个条目数组,其中 Empty
设置为 true
。
要检索单个 child,您可以指定 limitToFirst
:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
});
生成的 observable 将发出一个包含单个条目的数组(如果没有匹配项,则发出一个空数组)。如果发出的条目发生变化并且 Empty
设置为 false
,则可观察对象将 re-emit 与下一个匹配的条目(如果有的话)。如果你只对第一个匹配条目感兴趣,你可以使用 RxJS first
运算符:
import 'rxjs/add/operator/first';
...
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
})
.first();
我有一个 Object Observable
private Room = AngularFire.database.object(`/Rooms/`);
这个 observable 里面有很多值,但我有一个 child 叫做 Empty
。空时为 true
,空时为 false
。
我只想查询并从 observable 中取回一个房间。我该怎么做呢?这是我第一次尝试使用 forEach
进行查询,这不是我想要使用的东西。
this.Room.subscribe(list => {
list.forEach(snapshot =>{
if(snapshot.Empty == "true")
console.log(snapshot);
})
在 AngularFire2 中,要使用 child 值进行查询,您需要使用 list
:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true
}
});
生成的 observable 将在 Rooms
下发出一个条目数组,其中 Empty
设置为 true
。
要检索单个 child,您可以指定 limitToFirst
:
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
});
生成的 observable 将发出一个包含单个条目的数组(如果没有匹配项,则发出一个空数组)。如果发出的条目发生变化并且 Empty
设置为 false
,则可观察对象将 re-emit 与下一个匹配的条目(如果有的话)。如果你只对第一个匹配条目感兴趣,你可以使用 RxJS first
运算符:
import 'rxjs/add/operator/first';
...
AngularFire.database.list(`/Rooms/`, {
query: {
orderByChild: 'Empty',
equalTo: true,
limitToFirst: 1
}
})
.first();