使用AngularFire2查询查询Firebase只获取一个对象

时间:2016-12-11 15:56:21

标签: angular firebase firebase-realtime-database angularfire

我有一个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

1 个答案:

答案 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();