确保我在mongodb中更新最新文档

时间:2014-07-19 12:01:35

标签: node.js mongodb mongoose multiplayer mmo

我正在创建一个基于动作的RPG(不是真正的实时),玩家可以在其中构建自己的城市,并在瓷砖地图上移动他的英雄。

背景:

我有这样的收藏品:

  • 地图图块(每个图块都有自己的文档),
  • 英雄(包含统计数据+地图图块引用 - 将其放置在地图上)
  • city(每个玩家都有它的城市,我们存储玩家金币)。

情景:

要移动英雄,我应该:

  • 从集合中获取目标地图图块,以检查其是否已被占用
  • 从收集中获取英雄并检查他是否已经在目的地地图图块
  • 从收集中获取城市并检查玩家是否有足够的金币移动

,然后

  • 减去黄金以进行移动并保存城市文档
  • 使用新地图图块更新英雄并保存英雄文档

问题:

我对整个过程的主要担忧是,在发现之前和减去黄金之前的城市可以通过另一个行动来改变(即声称黄金行动只是在城市文件中通过原子加上金币加入城市文件)。

当然,一些请求阻止是在前端完成的,但游戏服务器只是api所以每个人都可以同时触发20个相同的请求并导致数据失步。有什么可以做的或者我是否超敏感?

聚苯乙烯。在我们处理一个文档的任何地方,我们使用update或findOneAndUpdate(使用$ set,$ add等)来省略查找,更改回调中的记录然后保存。

0 个答案:

没有答案