我正在尝试从
内部传递交易 db.runTransaction((transaction)=>{...
阻止到导出到外部.ts文件中的函数(例如functions.ts)。目的是使此外部函数成为事务计算的一部分,该事务在我的其他.js文件(例如MyScreen.js)之一中启动。
因此,在交易之前,导出的函数将如下所示:
static async updateDoc(ref) {
return await ref.update("field", firebase.firestore.FieldValue.increment(1));
}
通过交易后,将像这样:
static async updateDoc(ref,transaction) {
return await transaction.update(ref,"field", firebase.firestore.FieldValue.increment(1));
}
我将在MyScreen.js文件中导入这个functions.ts,然后像这样调用该函数:
Functions.updateDoc(my_ref,transaction);
我已经进行了此更改,并且代码似乎可以正常工作。但是,如何确定该外部功能实际上已成为原始交易的一部分呢?它是否足以正常工作以确保它现在实际上已成为该事务的一部分,这一事实吗?有办法检查吗?
答案 0 :(得分:0)
只要您的外部函数调用位于相同的db.runTransaction
块之内,并且传递transaction
参数(并且仍在同一db.runTransaction
块之内) ,它们是交易的部分-除非您未在区块中使用transaction.get()
,transaction.update()
等。
要对其进行测试,请故意制作错误代码或在某个地方引发错误,并触发.catch()
的{{1}}块,以查看事务是否已自动回滚。
希望这能回答您的问题。