Nodejs猫鼬更新播放器功能的改进

时间:2019-02-10 07:24:11

标签: node.js mongodb mongoose

我目前有一个逻辑,可以在特定玩家退出游戏时对其进行更新,但是我想知道如何进行改进(例如:在更新之前检查并比较数据)。所以现在这是玩家注销时正在发生的事情:

var updateData = { //data to comapre - save
    experience: player.experience,
    money: player.money,
    last_planet: player.last_planet,
    last_ip: player.last_ip
};

userModel.savePlayerProgress(player.username, updateData)
.then((res) => { if (!res) return; //make sure we actually have result
    console.log(`Logout: Player ${player.username} saved`) //notify
}).catch(err => console.log(`Logout: Saving player ${player.username} failed with error: ${err}`)); //handle issues

这是savePlayerProgress的工作方式:

function savePlayerProgress(username, data) {
return userModel.updateMany({username:username}, {
    $set: data
});

}

所以我在更新之前检查并比较数据的意思是,当前的逻辑是更新该球员的所有数据,但是例如,球员的钱可能与他登录时的钱相同,并且在这种情况下,不需要更新资金。现在可以很容易地执行以下操作:

userModel.savePlayerProgress(player.username)
.then((res) => {
if (player.money != res.money) {
//logic for saving player money
}
});

但是将来它会变得非常嵌套和复杂,因为最终我将不得不比较并保存每个玩家的大量信息,因此我正在寻找最佳/最快的方法。谢谢。

0 个答案:

没有答案