作者:喜欢香覀香的树花园 | 来源:互联网 | 2023-02-12 12:54
我正在开发一个使用Firebase作为后端的Angular2应用程序.在子页面上,我想显示由route参数指定的给定周的一些任务.
我通过BehaviorSubject
以下方式使用a 作为AngularFire2查询的参数:
export class PrepareComponent implements OnInit {
private routeSub: any;
weekId = '';
private weekSubject: BehaviorSubject = new BehaviorSubject('weekId');
taskTemplates$: FirebaseListObservable;
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$
observable没有返回给定weekId的任何数据.
我假设一旦weekId
通过查询路由参数设置,列表将把它作为查询参数并返回具有:的数据{ weekId: actualWeekId, ...}
.
编辑添加了存储在Firebase中的数据示例:
{
"-Kc_E0U4UOl9PPtxpzCM" : {
"description" : "asdfasdf",
"weekId" : "99f2"
},
"-Kc_E3wv3fhpUt56sM4u" : {
"description" : "another task",
"weekId" : "99f2"
}
}
所以我想要的是获取给定的所有记录 weekId
1> Rob..:
如果有人现在像我这样的困难,这可能会帮助你们:
db.list('/items', ref => ref.orderByChild('size').equalTo('large'))
请参考
https://github.com/angular/angularfire2/blob/master/docs/rtdb/querying-lists.md
欲获得更多信息!
以上是AngularFire2版本5及以上的解决方案!