【问题标题】:How to add document to Firestore and return Observable<T>如何将文档添加到 Firestore 并返回 Observable<T>
【发布时间】:2020-06-04 19:49:43
【问题描述】:

使用 @angular/fire 将文档添加到 Firestore 集合会返回一个 Promise。我想要做的是添加文档,然后返回创建文档的 Observable。到目前为止,这是我尝试过的:

colRef: AngularFirestoreCollection = this.afs.collection<Session>('sessions');   

add(session: Session): Observable<Session> {
         return this.colRef.add(session).then((docRef) {
           return this.colRef.doc<Session>(docRef.id).valueChanges();
         })    
      }

当然这不起作用,它试图返回一个Promise&lt;Observable&lt;Session&gt;&gt;。我知道为什么它不起作用,但不知道如何实现我所追求的。非常感谢任何帮助!

【问题讨论】:

    标签: angular firebase observable angularfire


    【解决方案1】:

    您可以将 RxJS from 方法与 switchMap 运算符一起使用。试试下面的

    import { from } from 'rxjs';
    import { switchMap } from 'rxjs/operators';
    
    add(session: Session): Observable<Session> {
      return from(this.colRef.add(session)).pipe(
        switchMap((docRef) => this.colRef.doc<Session>(docRef.id).valueChanges());
      );
    }
    

    from 可用于将 promise 转换为 observable。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2020-01-05
      • 1970-01-01
      • 2019-06-08
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多