首页 > 解决方案 > 如何强制测试 Firestore 并行事务?

问题描述

事务用于原子更改以及两个客户端可能同时更改相同数据的情况。

当多个客户端请求运行并行事务时,我想在开发环境中测试我的事务是否具有预期的行为。它仅在我的 Cloud Functions 中运行。我不能让这种性质的任何不良行为发生在 prod 环境中,所以我想检查 dev 是否​​一切正常,当它发生时,即使不太可能。

是否可以强制执行此测试用例?

使用 JS/TS。

标签: firebasegoogle-cloud-firestoregoogle-cloud-functions

解决方案


在并发编辑的情况下,Cloud Firestore 会再次运行整个事务。例如,如果一个事务读取文档,而另一个客户端修改了这些文档中的任何一个,则 Cloud Firestore 会重试该事务。此功能可确保事务在最新且一致的数据上运行。请参阅有关使用事务更新数据的文档。

您可以查看这篇同时讨论并发读写的帖子。另一个链接也有一个关于如何使用 Node.js 创建和运行事务的示例。

最后,您可以考虑创建两个 FirebaseApp 实例,并在两者中运行相同的事务,然后在它们运行的​​单个进程中在两者之间进行同步。或者,使用支持并行测试的测试工具,例如Node TAP


推荐阅读