插入时出现MongoDB同步错误

时间:2014-10-15 12:48:11

标签: node.js mongodb express mongoose

我正在为实时浏览器游戏制作原型,并将带有自动增量ID的游戏详细信息插入数据库(使用mongoose):

我设置了一个setGameID函数使其唯一,没有问题。

exports.setGameId = function(callback) {
    gameidcounter.findOneAndUpdate({},{$inc : {'counter' : 1}}).exec(function (e,c) {
           if(e) return;
            //console.log(c)
            callback(c.counter)
     })
};

但是当我使用100 MS setInterval运行+10个标签时,有些行正在替换它们的位置:

DocID  | gameID | gameData
790    | 790    | ....
791    | 791    | ....
792    | 793    | <---
793    | 792    | <---

如果行不正确,请使用此方法检查:

game.find().exec(function (err, _game) {
    for (var i = 0; i < _game.length; i++) {
        if(_game[i].gameID+1 != _game[++i].gameID ) {
            console.log("replaced lines :", _game[i].bet_id, _game[++i]._id);
        }
    };
})

如何在不使用任何库的情况下解决此问题?


我用这种方法解决了这个问题:

game.findOne().sort({'_id' : -1}).limit(1).exec(function (err, last_game) {
        if(last_game.gameID + 1 == _game.gameID){    
            //ok                
        }
        else {
            //error in rows
            console.log("skipped")
            gameidcounter.findOneAndUpdate({},{$inc : {'counter' : -1}}).exec(function (e,c) {})
        }
    })

0 个答案:

没有答案