云功能的执行是否会相互冲突



在我的项目中,只有云函数可以写入Firestore数据库,客户端永远不能
客户端只调用类似以下的云功能:

InflictDamageToEnemy((
{
1."从数据库读取玩家攻击">
2."从数据库中读取敌人健康状况">
3."敌人健康状况-=玩家攻击">
4."将新的敌人健康状况写入数据库">
}

我想知道当多个用户大致同时调用这个云函数时会发生什么?阅读和写作会互相冲突吗?明确地读写敌人的健康状况。像这样:

InflictDamageToEnemy((
{
1."从数据库读取玩家攻击">
2."从数据库中读取敌人健康状况">


敌人的健康状况在这里更改为不同的值,因为这个云函数是从不同的客户端调用并执行的


3;敌方生命值-=玩家攻击">
4;将新的敌人健康写入数据库">
}

这会发生吗?如果是,如何解决?我必须在云功能中使用事务吗?

谢谢!

在Cloud Functions v1中,每个函数调用都在一个单独的容器上运行,其中没有其他调用同时运行。因此,如果两个函数调用并行运行,它们将在单独的容器上运行。

也就是说:对于任何数据库交互,您都希望使用事务、批处理写入和/或安全规则来确保在该级别上不会发生冲突。

最新更新