因此,我正在创建一个查询,以使内容增加1,但是由于某种原因,该查询运行了两次:
新代码:(已删除的旧代码)但是,我离开了异步,因为我认为是造成这种情况的原因,而不是。我不确定是什么原因引起的,但是这是我现在正在做的事情:
socket.on('upgrade-stat', data => {
const args = {
id: socket.handshake.session.passport.user
};
console.log('Snapshot Start');
Snapshot.updateOne(
{ userid: args.id },
{
$inc: {
'stats.str': 1
}
}
).then((res) => {
console.log('Snapshot done');
});
console.log('Start increment query');
User.updateOne(
{ _id: args.id },
{
$inc: {
'currency.cs': 1
}
},
(err, res) => {
if (err) console.log(err);
}
).then(user => {
console.log('End increment query');
return 'It worked';
});
});
我自由地启用了猫鼬调试功能,这就是控制台中产生的结果:
Snapshot Start
Start increment query
Mongoose: users.updateOne({ _id: ObjectId("5cd49529b7809f44e48f84ed") }, { '$inc': { 'currency.cs': 1 } }, {})
Mongoose: snapshots.updateOne({ userid: '5cd49529b7809f44e48f84ed' }, { '$inc': { 'stats.str': 1 } }, {})
Mongoose: users.updateOne({ _id: ObjectId("5cd49529b7809f44e48f84ed") }, { '$inc': { 'currency.cs': 1 } }, {})
Snapshot done
End increment query
我想指出的是,在护照登录和反序列化之后,它会这样做。登录过程仅运行一个查询。之后,使用客户端的事件进行查询,以便始终加倍。
编辑:进一步的调查似乎只是在User模型上加倍,而没有其他。使用不同的模型可以正常工作,我不确定是什么原因造成的,因为这里没有区别。