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 可能会更好地展示它。