猫鼬findOne不要返回任何东西

时间:2019-01-16 18:27:40

标签: javascript node.js mongodb mongoose mongodb-query

在UsersSchema中,我定义了一个函数,可以从db返回一个对象,知道decoded._idtokens.token

UserSchema.statics.findByToken = function(token) {
  var User = this;
  var decoded;

  try {
      decoded = jwt.verify(token, 'abc123');
  } catch (e) {

      return Promise.reject();
  }

  return User.findOne({
    '_id': decoded._id,
    'tokens.token': token,
    'tokens.access': 'auth'
  });
};

由于某些原因,尽管具有该ID的对象存在于数据库中,但findOne函数仍返回null

2 个答案:

答案 0 :(得分:0)

我认为这是因为您没有等待异步查询解决

尝试一下

UserSchema.statics.findByToken = async function(token) {
  var User = this;
  var decoded;

  try {
      decoded = jwt.verify(token, 'abc123');
  } catch (e) {

      return Promise.reject();
  }

  return await User.findOne({
    '_id': decoded._id,
    'tokens.token': token,
    'tokens.access': 'auth'
  });
};

答案 1 :(得分:0)

完成!解决了!我更新了猫鼬版本,该版本具有重大更改,并且其他模块中的功能开始失败。我用新的替换了它们,并且有效!