私はFirebaseをバックエンドとしてAngular2アプリケーションを開発しています。サブページでは、ルートパラメータで指定された週のタスクを表示します。AngularFire2でFirebaseのリストを正しく照会する方法は?
私は次のように照会AngularFire2へのパラメータとしてBehaviorSubject
を使用しています:ここで
export class PrepareComponent implements OnInit {
private routeSub: any;
weekId = '';
private weekSubject: BehaviorSubject<any> = new BehaviorSubject('weekId');
taskTemplates$: FirebaseListObservable<TaskTemplate[]>;
constructor(private route: ActivatedRoute,
private router: Router,
private angularFire: AngularFire) {
// this.taskTemplates$ = angularFire.database.list("/taskTemplates");
はFirebaseクエリです:
this.taskTemplates$ = angularFire.database.list("/taskTemplates", {
query: {
equalTo: this.weekSubject
}
});
}
ngOnInit() {
this.routeSub = this.route.params.map(
(params: Params) => this.weekId = params[ 'weekid' ]
).subscribe(
weekId => this.weekSubject.next(weekId)
);
}
ngOnDestroy() {
this.routeSub.unsubscribe();
}
}
残念ながら、観測可能Firebase taskTemplates$
が戻っていません指定されたweekIdのすべてのデータ。
weekId
が経路パラメータをクエリすることによって設定されると、リストはそれをクエリパラメータとして取得し、{ weekId: actualWeekId, ...}
のデータを返すと想定しました。
{
"-Kc_E0U4UOl9PPtxpzCM" : {
"description" : "asdfasdf",
"weekId" : "99f2"
},
"-Kc_E3wv3fhpUt56sM4u" : {
"description" : "another task",
"weekId" : "99f2"
}
}
だから私は何をしたいのかコアの問題があるように思われる与えweekId
あなたのデータの表現も質問に含めることができますか? – cartant
@cartant質問にサンプルデータを追加しました。助けてくれてありがとう! – paweloque