我的小费游戏很少。游戏完成后,我从猫鼬数据库中获取所有提示,然后使用 forEach 迭代这些提示。
对于这些提示中的每一个,我都会获取用户名并从 mongoose db 加载用户以增加该用户的积分,然后将用户更改保存回 db。
一个用户可以拥有多个提示。
Tips.find({...}).exec(function(err, gameTips) {
gameTips.forEach(tip, i) => {
User.findOne({
username: tip.username
}).exec(function(err, user) {
user.points = user.points + 1;
user.save(function(err) {
console.log("Points were increased");
});
});
});
}
现在我的问题是用户的 findOne 是在保存上一个提示处理之前完成的。所以积分不会正确增加。
用户:testUser 有 4 个提示 | 预期:testUser.points = 4; | 当前:testUser.points = 2;
是否有可能异步执行此操作,以便为所有用户查找和保存将一个接一个地完成,以便每次我这样做:
user.points = user.points +1;
我会在增加之前有更新的积分吗?
人到中年有点甜
开满天机
相关分类