firestore-反应本机-将事务作为参数传递给函数

时间:2019-05-06 14:28:59

标签: react-native google-cloud-firestore

我正在尝试从

内部传递交易

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);

我已经进行了此更改,并且代码似乎可以正常工作。但是,如何确定该外部功能实际上已成为原始交易的一部分呢?它是否足以正常工作以确保它现在实际上已成为该事务的一部分,这一事实吗?有办法检查吗?

1 个答案:

答案 0 :(得分:0)

只要您的外部函数调用位于相同的db.runTransaction之内,并且传递transaction参数(并且仍在同一db.runTransaction块之内) ,它们是交易的部分-除非您未在区块中使用transaction.get()transaction.update()等。

要对其进行测试,请故意制作错误代码或在某个地方引发错误,并触发.catch()的{​​{1}}块,以查看事务是否已自动回滚。

希望这能回答您的问题。