基于Google自己的Firestore文档,我试图在节点js中实现交易: https://firebase.google.com/docs/firestore/manage-data/transactions 他们给出的示例是使用嵌套的Promise完成的。但是,Google为云功能提供的linter文件说:避免嵌套承诺。 (承诺/无嵌套)
那么我应该如何重构此代码,以便所有.then()都一个接一个地链接?通常我可以,但是在这种情况下,我无法弄清楚如何在同时传递文档的同时将变量t传递到下一个then()块。
docSizesRef = firestore.collection("onlineUsers").doc("documentSizeTracker")
return firestore.runTransaction(t => {
return t.get(docSizesRef)
.then(doc => {
var newCount = doc.data().documentStoredIn - 1;
return t.update(docSizesRef, { documentStoredIn: newCount });
});
})
.then(result => {
return console.log('Transaction success!');
}).catch(err => {
console.log('Transaction failure:', err);
});
编辑:并不是真正地重复,因为我已经尝试了“重复”答案中的方法,但是却出现此错误:错误:无法修改已提交的WriteBatch。