node.js - 仅在查询 Firestore 后,无法让 nodejs 异步循环打印结果
问题描述
您好,我很难让我Promises.all
只触发一次。你能帮我调试这段代码,这样它只打印一次。
Firestore 架构是:
/As/${ADoc}/Bs/${BDoc}/Cs/${CDoc}/Ds/${DsDocs}
我需要得到出现的次数${DsDocs.id}
。
谢谢你的帮助。
var DsCount = []
var allPromises = []
const APromise = db.collection("As").get().then((ADocs) => {
allPromises.push(APromise)
ADocs.forEach((ADoc) => {
const BPromise = db.collection(`As/${ADoc.id}/Bs`).get().then((BDocs) => {
allPromises.push(BPromise)
BDocs.forEach((BDoc) => {
CPromise = db.collection(`As/${ADoc.id}/Bs/${BDoc.id}/Cs`).get().then((CDocs) => {
allPromises.push(CPromise)
CDocs.forEach((CDoc) => {
const CVBPromise = db.collection(`As/${ADoc.id}/Bs/${BDoc.id}/Cs/${CDoc.id}/Ds`).get().then((DsDocs) => {
allPromises.push(CVBPromise)
DsDocs.forEach((DsDoc) => {
if(DsCount[DsDoc.id] == undefined){
DsCount[DsDoc.id] = 1
}else{
DsCount[DsDoc.id] = DsCount[DsDoc.id] + 1
}
Promise.all(allPromises).then(results => {
console.log(DsCount)
})
})
})
})
})
})
})
})
})
解决方案
推荐阅读
- ios - 将 swift 协议属性覆盖为可选
- java - 如何使用 Eclipse IDE 在 Javafx 中创建 +/- 按钮和删除按钮
- powershell - 获取安装在系统上的 UWP 应用的“普通”(最终用户可读)名称
- google-compute-engine - 如何使用 GCE Node.js 客户端从实例模板创建新的 GCE VM 实例?
- angular - 带有父子路由的反应式表单
- c++ - 如何让焦点重新回到透明(ClickThrough 启用)窗口
- c# - 在 C# 中使用 QDataStream 读取在 QT 中创建的二进制文件
- python - 石头剪刀布运行两次错误
- bash - 如何读取 Bash 脚本上的 AT 命令响应
- ruby-on-rails - Rails枚举在Sidekiq Job中返回整数值