如何将文档添加到Firestore并返回Observable <T>

时间:2020-06-04 19:49:43

标签: angular firebase observable angularfire

使用@ 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>>。我知道为什么为什么不起作用,但不知道如何实现我的目标。任何帮助,不胜感激!

1 个答案:

答案 0 :(得分: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可用于将承诺转换为可观察的。