首页 > 解决方案 > 仅在查询 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)
                })
              })
            })
          })
        })
      })
    })
  })
})

标签: node.jsasynchronousgoogle-cloud-firestore

解决方案


推荐阅读