如何更改函数中的promise以在数据到达之前停止它返回?

时间:2018-03-03 12:51:03

标签: angular firebase promise google-cloud-firestore

我需要为firestore事务维护唯一索引。我使用https://firebase.google.com/docs/firestore/manage-data/transactions中的“从交易中传递信息”作为指南,但今天花了11个小时试图获取生成的索引。我确定这是一个计时错误,但我无法弄清楚如何解决它。

控制台日志:

returned from call undefined   
eatery-menu.component.ts:200 index 0 event MatCheckboxChange {source: MatCheckbox, checked: true} result true
firebase.service.ts:28 Index= 86
firebase.service.ts:34 newIndex= 87

eatery-menu.components发起呼叫。

orderIndex() {
let db = this.firebase.firestore();
let sfDocRef = db.collection('eOrderIndex').doc('orderIndex');
db.runTransaction(function (transaction) {
  return transaction.get(sfDocRef).
    then(function (sfDoc) {
      if (!sfDoc.exists) {
        throw "Document does not exist!";
      }
      console.log("Index=", sfDoc.data().index);
      let newIndex =  sfDoc.data().index + 1;
      transaction.update(sfDocRef, { index: newIndex });
      return newIndex;
    })
}).then(function (newIndex) {
  console.log("newIndex=", newIndex);
  //return newIndex;       <- tried here 
}).catch(function (err) {
  console.log(err);
});
  //return newIndex;       <- tried here 
}

令我困惑的一件事是'return'用于Promises并返回函数的结果。对不起我明天就应该把它放在澳大利亚的午夜,所以我明天早上才能回复。

0 个答案:

没有答案