Angularfire2 / Firebase - 在运行时无法使用angularfire2列表进行查询

时间:2017-06-06 07:50:08

标签: angular firebase firebase-realtime-database angularfire2

我正在使用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);
      })

1 个答案:

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