我有一个带有angularfire2的小角度应用程序(Angular 6),现在我只想选择一个按日期表示的对象,我可以获取.take(1)或.map(),但不能一起获取,怎么办?
我尝试了以下方法
return this.db.list(this.BASE_PATH, ref => ref.orderByChild(this.PUBLISH_DATE).limitToLast(1)).snapshotChanges().pipe(take(1)).pipe(map(res => {
return res.map(item => {
console.log(item);
});
}));
答案 0 :(得分:1)
take(n)
仅采用可观察的前n个发射,而不是发射的阵列中的n个项目,有关take
运算符的更多信息,请参见here。
您可以只使用map
对数组进行排序/过滤并返回所需的值,然后进行订阅。做这样的事情:
this.db.list(this.BASE_PATH, ref => ref.orderByChild(this.PUBLISH_DATE).limitToLast(1)).snapshotChanges()
.pipe(map(arr => arr.sort((a, b) => b.date - a.date)[0]))
.subscribe(item => {
console.log(item);
});
编辑: This stackblitz可能在展示它方面做得更好。