angular - 如何将文档添加到 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>>
. 我知道为什么它不起作用,但不知道如何实现我所追求的。非常感谢任何帮助!
解决方案
您可以将 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。
推荐阅读
- javascript - 如何在 Vue.js 中使用函数而不是 v-for 来访问数据?
- python-3.x - 错误:需要参数 -i/--image
- python - AttributeError:'str'对象在python pyQt中没有属性'set'错误
- node.js - Opsworks NodeJs 应用程序每 120 秒使用 SIGTERM 重启
- itext7 - 将页眉、页脚和页码添加到转换为 PDF iText 7 的 HTML 页面
- java - 为什么我的最后一个方法不打印?我怎样才能让它执行
- c# - VS 2017 缺少模板空白应用程序(Android)c#
- sql - 查询以根据不同的其他列值对相似的列值进行分组
- ansible - Ansible 2.5 包含带变量的角色
- java - Spring IllegalState 无法在单元测试中创建数据源不稳定行为