猫鼬:依次更新多个集合

时间:2019-01-09 23:26:14

标签: mongodb mongoose

我正在尝试同时更新mongodb中的3个集合(使用mongoose)。我在文档中找不到任何说明如何处理这种情况的内容,所以现在我想知道这是否值得建议-如果可以的话,我应该如何解决。

我希望用户添加一个游戏,该游戏可以执行以下操作。

  • 将游戏添加到games集合中
  • 将游戏的发行版本添加到releases集合中
  • 将具有gameIdreleaseId的对象推入_id集合中具有匹配配置文件vault的文档中

我的添加游戏功能如下:

const addGame = ({ gameId, gameName, releaseId, releaseName }) => {
  // ADD/UPDATE GAME
  Game.updateOne(
    { gameId }, 
    { $setOnInsert: { gameId, gameName } }, 
    { upsert: true }
  );

  // ADD/UPDATE RELEASE
  Release.updateOne(
    { releaseId }, 
    { $setOnInsert: { gameId, releaseId, releaseName } }, 
    { upsert: true }
  );

  // ADD/UPDATE USER VAULT
  Vault.updateOne(
    { _id: profile._id }, 
    { $push: { library: { gameId, releaseId } }
  });
}

现在,这很好用。但是,如果第一个updateOne调用失败了怎么办。除非所有三个调用都成功,否则有什么方法可以防止这种情况发生?

我是否甚至以正确的方式为mongodb建模数据?我可能只有一个巨大的集合,但是结果是会有很多重复的数据,这就是为什么我将其分为三个集合。

感谢您的帮助。预先感谢。

0 个答案:

没有答案