我正在尝试同时更新mongodb中的3个集合(使用mongoose)。我在文档中找不到任何说明如何处理这种情况的内容,所以现在我想知道这是否值得建议-如果可以的话,我应该如何解决。
我希望用户添加一个游戏,该游戏可以执行以下操作。
games
集合中releases
集合中gameId
和releaseId
的对象推入_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建模数据?我可能只有一个巨大的集合,但是结果是会有很多重复的数据,这就是为什么我将其分为三个集合。
感谢您的帮助。预先感谢。