angular - 使用 switchMap 中的 observable 将消息添加到 firestore
问题描述
这个问题是这个堆栈溢出问题的延续
this.firestoreService.addMessage(message) 不会将消息添加到数据库
addMessage() 在执行 tap((user) => console.log(user)) 之前返回,
submit() {
this.subscription = from(this.form.value.users)
.pipe(
finalize(() => {
console.log('finalize'),
this.dismiss()
}),
map(user => this.buildMessage(user)),
switchMap((message) => this.firestoreService.addMessage(message))
).subscribe();
}
addMessage(data:Message):Observable<any> {
console.log('addMessage');
data.timestamp = firebase.firestore.FieldValue.serverTimestamp();
return this.authService.currentUser$.pipe(
tap((user) => console.log(user)),
switchMap(user => {
console.log('addMessage user: ', user);
if (user.company) {
return from(this.firestore
.collection<any>(user.company)
.doc(user.licence)
.collection<any>(message)
.add(data))
} else {
return of([]);
}
}
)
);
}
output: 'addMessage'
no output: tap((user) => console.log(user)),
this.authService.currentUser$
get currentUser$() {
return this.angularFireAuth.user.pipe(
tap((user) => console.log(user)),
filter(user => !!user),
switchMap(user => this.userService.user$(user.uid))
);
}
解决方案
推荐阅读
- javascript - How can I share methods that call P5.js functions between two different sketches/canvases?
- nginx - 处理 nginx 中的 lua 错误并渲染 500 页面
- r - 如何使用 prop.table 创建数据集?
- css - 将 CSS 样式表注入 YouTube 页面时出现问题
- python - 在 Python 中使用超出索引的查询集编写 If 语句的最佳方法?
- vue.js - Microsoft 的 Graph API 请求产生不正确的标头
- html - 我们如何从 github 链接中知道 csv 的来源
- python - 使用铰链损失的 Mnist 数据集的鲁棒机器学习
- python - 使用卷积计算距离 numpy
- python - 异步运行 Azure Durable Function