如何将嵌套的Node JS重组为链式Cloud Function Transaction

时间:2018-08-06 18:36:36

标签: javascript node.js promise google-cloud-firestore

基于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。

0 个答案:

没有答案