首页 > 解决方案 > 如何将文档添加到 Firestore 并返回 Observable

问题描述

使用 @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<Observable<Session>>. 我知道为什么它不起作用,但不知道如何实现我所追求的。非常感谢任何帮助!

标签: angularfirebaseobservableangularfire

解决方案


您可以将 RxJSfrom方法与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。


推荐阅读