Javascript Firestore云函数中的嵌套操作

Javascript Firestore云函数中的嵌套操作,javascript,firebase,google-cloud-firestore,google-cloud-functions,Javascript,Firebase,Google Cloud Firestore,Google Cloud Functions,在集合更新时,我有一个onUpdate函数集。在该函数中,我尝试使用已更新集合中的数据对文档发出get请求,然后根据值设置该文档。但是,当此函数运行时,它是一致的,有时会进行适当的更改,有时则不会。当我部署函数并从冷启动启动时,情况尤其如此。我如何确保它返回正确的承诺 .onUpdatechange,上下文=>{ const newValue=change.after.data; const previousValue=change.before.data; 返回firestore。集合“A”

在集合更新时,我有一个onUpdate函数集。在该函数中,我尝试使用已更新集合中的数据对文档发出get请求,然后根据值设置该文档。但是,当此函数运行时,它是一致的,有时会进行适当的更改,有时则不会。当我部署函数并从冷启动启动时,情况尤其如此。我如何确保它返回正确的承诺

.onUpdatechange,上下文=>{ const newValue=change.after.data; const previousValue=change.before.data; 返回firestore。集合“A”。获取 .ThenSapshot=>{ snapshot.forEachdoc=>{ var docData=doc.data 如果docData.field1==context.params.field1{ var newDocPath='B/'+StringdocData.field2 返回firestore.docnewDocPath.get.Thennapshot2=>{ 如果snapshot2.data==未定义{ 返回快照2.ref.set{ A:0 } }否则{ 返回快照2.ref.set{ A:parseIntsnapshot2.data.A+1 } } } } } } 试试这个:

.onUpdate((change, context) => {
  const newValue = change.after.data();
  const previousValue = change.before.data();
  return firestore.collection('A').get().then(snapshot => {
    var promises = [];
    var nDpromises = [];
      snapshot.forEach(doc => {
        var docData = doc.data()
        if (docData.field1 == context.params.field1) {
          var newDocPath = 'B/' + String(docData.field2);
          const nD = firestore.doc(newDocPath).get().then(snapshot2 => {
            if (snapshot2.data() == undefined) {
              promises.push(snapshot2.ref.set({A: 0}));
            } else {
              promises.push(snapshot2.ref.set({A: parseInt(snapshot2.data().A) + 1}));
            }
          });
          nDpromises.push(nD);
        }
      });
      return Promise.all(nDpromises).then(() => {
        return Promise.all(promises);
      });
    });
  });