Angularfire 拍摄和映射
Angularfire take and map
我有一个小 angular 应用程序 (Angular 6) angularfire2,现在我只想 select 一个对象,按日期排序,我可以获取 .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);
});
}));
take(n)
仅获取可观察对象的前 n 个发射,而不是发射的数组的 n 项,请参阅 here 了解有关 take
运算符的更多信息。
您可以只使用 map
到 sort/filter 您的数组和 return 所需的值,然后订阅。做这样的事情:
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 可能会更好地展示它。
我有一个小 angular 应用程序 (Angular 6) angularfire2,现在我只想 select 一个对象,按日期排序,我可以获取 .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);
});
}));
take(n)
仅获取可观察对象的前 n 个发射,而不是发射的数组的 n 项,请参阅 here 了解有关 take
运算符的更多信息。
您可以只使用 map
到 sort/filter 您的数组和 return 所需的值,然后订阅。做这样的事情:
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 可能会更好地展示它。