Mongoose / MongoDB增加了两倍,我不知道为什么

时间:2019-05-09 09:44:08

标签: node.js mongodb mongoose

因此,我正在创建一个查询,以使内容增加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模型上加倍,而没有其他。使用不同的模型可以正常工作,我不确定是什么原因造成的,因为这里没有区别。

0 个答案:

没有答案