【问题标题】:angular Firestore: Observable.toPromise() versus Observalble.firstValueFrom();角度 Firestore:Observable.toPromise() 与 Observalble.firstValueFrom();
【发布时间】:2022-12-25 23:34:18
【问题描述】:

我在与 AngularFireStore 数据库(angular/fire 7.2)相关的 Angular 项目(13.0.3)中使用 Observables

我需要一个简单的方法来从 firestore 集合中检索一些数据并将其返回以用于服务。我不需要可观察的,只需要数据库中的当前值。

所以我编写了以下简单的实用程序方法来获取文档并将其返回:

async readDocument(collectionPath : string, key : string) : Promise<any> {
    let path = `${collectionPath}/${key}`
    let doc  = await this.firestore.doc(path).get().toPromise()
    return doc.data();         
  }

这实际上工作得很好并且做了我想要的,除了 observable.toPromise() 显示为 strike -hrough 并且显然已 depcreated 并将被丢弃在 rxjs 的 V8 中。

代码完整中出现一条消息,建议使用方法firstValueFrom()'lastValueFrom() 而不是 .toPromise(),这是有道理的,考虑到 '.get() 可能返回对象集合而不是单个对象。

问题是即使警告提示它,Observable.lastValueFrom() 实际上并不作为 Observable 上的方法存在。试图弄清楚为什么会这样,以及我可以做些什么来避免使用 rxjs Observable 的弃用方法?我真的更愿意保持简单,而不必订阅和使用管道以及所有这些只是为了从数据库中获取单个值。

【问题讨论】:

    标签: angular rxjs angularfire2


    【解决方案1】:

    它不是一个方法,而是一个效用函数,你应该这样称呼它

    import { firstValueFrom } from 'rxjs';
    //...
    
    const doc = await firstValueFrom(this.firestore.doc(path).get());
    

    【讨论】:

      【解决方案2】:

      同样的问题

      它对我不起作用。它无限地散发价值

      【讨论】:

        猜你喜欢
        • 2017-10-23
        • 2019-12-14
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        • 2012-03-14
        • 2020-01-03
        相关资源
        最近更新 更多