我需要为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并返回函数的结果。对不起我明天就应该把它放在澳大利亚的午夜,所以我明天早上才能回复。