angular - Angular/Firestore 对文档中对象数组的值求和
问题描述
我在 Firestore 集合中有一个包含多个键值的文档,其中一个是对象数组,我想计算该 ID 的数组“会话”内的键“订单”的所有值的总和。
{
id: "asdSDWESHGawhadah",
name: "John",
lastName: "Doe",
age: "20",
sessions: [
{
orders: 1
date: 2019 - 11 - 24
},
{
orders: 5
date: 2019 - 11 - 26
},
{
orders: 4,
date: 2019 - 11 - 29
},
],
}
我无法在 HTML 中显示总和的结果(在本例中为 10)。我尝试在组件的打字稿中执行此操作,在该组件中调用为我提供文档的服务,但是该变量是带有我的接口的 Observable,因此我无法使用 map 或 reduce,我知道有一种使用 RxJs 的方法,我可以找不到一个很好的例子来理解,据我所知,它很复杂。有没有一种简单的方法可以直接从 Firestore 获取总和结果?
constructor(
private fbservice: FirebaseService,) { }
ngOnInit() {
this.fbpatient$ = this.fbservice.getOnePatient(idPatient);
}
谢谢
解决方案
感谢用户 SnorreDan,我想出了这个解决方案,它对我有用,尽管我不知道这是最好的方法还是最佳实践。然后我按照 SnorreDan 的建议订阅 HTML {{mySumObservable$}}
let sum = 0;
this.mySumObservable$ = this.fbservice.getOnePatient(idPatient).pipe(
map((patient) => {
patient.sessions.forEach((patient) => {
sum = sum + patient.orders;
});
return sum;
})
) as any;
推荐阅读
- php - 安装自定义 Symfony Bundle 后出现 ClassNotFoundError
- javascript - 检查字符串是否包含子字符串(不区分大小写)
- c# - 防止在 .NET 中设置属性
- json - 使用 fetch 时如何将响应正文从 application/x-ndjson 转换为 application/json?
- codeigniter - 用于 csrf 保护的 Codeigniter 3 SameSite 属性
- smartcard - 使用 APDU 读取智能卡数据
- xamarin - Xamarin Forms - 地理围栏库
- r - 如何从R中的多个列表中找到最小的元素?
- git - 为什么我的 Git 存储库在删除分支/标签时会变重?
- javascript - django 管理列表自定义按钮的点击事件