我正在使用angular2 / firebase并使用angularfire2模块进行项目。我想要一些实时数据,所以我使用angularfire2列表,并在组件方面使用列表上的订阅。在实时场景中,如果在firebase数据库中添加了任何新项目,则它会订阅但不进行任何查询。如何使用查询存档订阅?我正在使用以下代码,其中查询是基于我想要数据的一些选择。
getRealtimeData(query: any){
if(query){
return this.af.database.list(databaseName+"/messages", {
query: {
orderByChild: 'is_broadcast',
equalTo: query.value
}
});
} else {
return this.af.database.list(databaseName+"/messages", {
query: {
orderByChild: 'timestamp'
}
});
}
}
我在我的组件中调用它来创建查询
var query;
if (this.isBroadcastMessage && this.isGroupChatMessage || !this.isBroadcastMessage && !this.isGroupChatMessage) {
query = null;
} else if (this.isBroadcastMessage && !this.isGroupChatMessage) {
query = {
value: true
};
} else if (!this.isBroadcastMessage && this.isGroupChatMessage) {
query = {
value: false
};
}
this.firebaseService.getRealtimeData(query).subscribe((data: any) => {
console.log("data::", data);
}, (error: any) => {
console.log("error::", error);
})
答案 0 :(得分:1)
用户重播主题
android:width
首先,像这样创建你的android:height
函数
query$: ReplaySubject<any> = new ReplaySubject(1);
然后
getRealtimeData
现在
// you no need to pass any argument here
getRealtimeData():FirebaseListObservable<any>{
return this.af.database.list(databaseName+"/messages", {
query: this.query$
});
如果你打电话,将会调用 public updateQuery(query: string): void {
this.query$.next(query);
}
函数
this.firebaseService.getRealtimeData().subscribe((data: any) => {
console.log("data::", data);
}, (error: any) => {
console.log("error::", error);
})