在2个数据库对象中进行更改,但仅相互依赖

时间:2014-03-29 06:59:37

标签: node.js mongodb database-design mongoose

我有2个猫鼬数据库对象usergame,如:

 User = {
    game : game.Id
    // each user has a game attachetd to it
 }
 Game = {
    users : [user.Id, user.Id, ...]
    // game has a list of users who have it attached to them
 }

我想要执行“删除游戏”'对这两个对象进行操作。

从用户移除游戏,并从游戏阵列中删除相应的用户。

但我希望它与对方保持一致。即我最终不应该是一个附有游戏的用户,他们的阵列没有该用户,或者一个游戏阵列的用户没有附加游戏。

我无法弄清楚这样做的逻辑。

UserSchema.methods.removeGame = function(gameId) {
    //remove 
    this.game = null;
    //save
    this.save(function(err, user){
        if(!err) {
            // then remove the user from game
            // something with #1 below
            // call 
            game.removeUser(this.id);
            // but #2
        }
        else {
            // don't remove the user from game
            // also see #3
        }
    });
}

GameSchema.methods.removeUser = function(userId) {
    //remove
    this.users[userId]= null;
    //save
    this.save(function(err, game){
        if(!err) {
            // then remove the game from user
            // something with #1 above
        }
        else {
            // don't remove the game from user
            // #2 
            // if this happens, undo removing the game from the user above
            // same for above #3
        }
    });
}

有什么建议我应该怎么做?

承诺对我的情况有帮助吗?

首先,我应该将这种逻辑放在数据库对象中吗?

我应该重新设计我的数据库吗?

0 个答案:

没有答案