javascript - 如何在 JS 中过滤 firebase 文档中的数据并在 Promise 中获取 PromiseResult
问题描述
我如何PromiseResult
进入JS
这是我尝试过的代码:
total_amount = db.collection("users").get().then((querySnapshot) => {
const sum = querySnapshot.docs.reduce((a, b) => a + b.data().amount, 0)
return sum
});
console.log(total_amount);
如何在 Firestore 中过滤集合中的数据
If the first letter is "+" then I want to get filtered in Income section if the first letter is "-" then I want to get filtered in Expenditure Section
我试过这个,但不工作:
const total_sum = querySnapshot.docs.reduce((a, b) => a + b.data().amount, 0)
const income_sum = querySnapshot.docs.filter((item) => item > 0).reduce((a, b) => a + b.data().amount, 0)
const expenditure_sum = querySnapshot.docs.filter((item) => item < 0).reduce((a, b) => a + b.data().amount, 0) * -1;
return total_sum, income_sum, expenditure_sum
});
console.log(total_amount);
我得到的输出为undefined
解决方案
所以,有几件事。您似乎正在调用一个返回承诺的函数,并且在等待它完成之前,您将其记录下来。
您可以将 a 包装Promise.All()
到它上面,但这需要父函数,async
这可能并不理想。
因此,我们将函数声明为 aconst
并将其定义为异步函数您可以修改它以适应您的代码,但在不知道完整的父块的情况下,我只能做出一些假设。
const getUsers = async()=>{
total_amount = await db.collection("users").get().then((querySnapshot) => {
const sum = querySnapshot.docs.reduce((a, b) => a + b.data().amount, 0)
return sum
});
console.log(total_amount);
}
getusers();
推荐阅读
- java - 单击列表视图中的另一行时更改行的值
- php - php vs MySQLi,哪个更快
- nginx - 使用 Helm 图表 nginx-ingress 和自定义 nginx 模板
- python - 将 Python 列表添加到已填充的 CSV 中间
- google-cloud-firestore - 在 Angular Firestore 查询中禁用缓存
- mysql - 基于多个 OR 谓词对结果集进行排序
- c# - VS 自动生成的事件处理方法的代码插入点
- c# - NJsonSchema:如果我知道我的模式中的一个字段在运行时只能有几个有限值,我可以将它添加到我的验证逻辑中吗?
- centos - 在centos7上安装flutter:centos7中debian包lib32stdc++6的等价物是什么?
- git - 如何将项目与子模块与 Gitlab CI docker runner 集成?