在我的项目中,只有云函数可以写入Firestore数据库,客户端永远不能
客户端只调用类似以下的云功能:
InflictDamageToEnemy((
{
1."从数据库读取玩家攻击">
2."从数据库中读取敌人健康状况">
3."敌人健康状况-=玩家攻击">
4."将新的敌人健康状况写入数据库">
}
我想知道当多个用户大致同时调用这个云函数时会发生什么?阅读和写作会互相冲突吗?明确地读写敌人的健康状况。像这样:
InflictDamageToEnemy((
{
1."从数据库读取玩家攻击">
2."从数据库中读取敌人健康状况">
敌人的健康状况在这里更改为不同的值,因为这个云函数是从不同的客户端调用并执行的
3;敌方生命值-=玩家攻击">
4;将新的敌人健康写入数据库">
}
这会发生吗?如果是,如何解决?我必须在云功能中使用事务吗?
谢谢!
在Cloud Functions v1中,每个函数调用都在一个单独的容器上运行,其中没有其他调用同时运行。因此,如果两个函数调用并行运行,它们将在单独的容器上运行。
也就是说:对于任何数据库交互,您都希望使用事务、批处理写入和/或安全规则来确保在该级别上不会发生冲突。