Express 猫鼬承诺与蓝鸟护照js错误

Express 猫鼬承诺与蓝鸟护照js错误,express,mongoose,promise,passport.js,bluebird,Express,Mongoose,Promise,Passport.js,Bluebird,这就是错误: 警告:在D:\Playgrounds\express-mongoose-es6-rest-api\config\passport.js:15:18处的处理程序中创建了承诺,但未从中返回 这是我的passport.js: var JwtStrategy = require('passport-jwt').Strategy, ExtractJwt = require('passport-jwt').ExtractJwt; // load up the user model v

这就是错误:

警告:在D:\Playgrounds\express-mongoose-es6-rest-api\config\passport.js:15:18处的处理程序中创建了承诺,但未从中返回

这是我的passport.js:

var JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;

// load up the user model
var User = require('../server/user/user.model');
var config = require('./config'); // get db config file

module.exports = function(passport) {
  var opts = {};
  opts.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
  opts.secretOrKey = config.jwtSecret;
  passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    User.findById(jwt_payload._id)
      .then(user => {
          return done(null, user);
      })
      .catch(err => {
          return done(err);
      })
  }));
};
但是,我怀疑主要问题是我的路线控制器(store.controller.js):

如果我不使用save(),只直接返回一条消息(如
return res.json({msg:“Hi”})
),则不会出错。

请帮助我

尝试在您的护照代码中添加
返回
。我认为这个错误是因为你没有回复一个外在的承诺

passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    return User.findById(jwt_payload._id)    //here
      .then(user => {
          return done(null, user);
      })
      .catch(err => {
          return done(err);
      })
  }));

结果是我忘记了在模型预保存时调用next()。
我花了大约两天的时间来解决这个问题。
因此,如果阅读本文的人也有同样的问题,请确保调用next()

Is
store.save()
async?你能简单地等待保存,然后返回结果吗?我的意思是,控制器中的主要功能定义为
async
passport.use(new JwtStrategy(opts, function(jwt_payload, done) {
    return User.findById(jwt_payload._id)    //here
      .then(user => {
          return done(null, user);
      })
      .catch(err => {
          return done(err);
      })
  }));