MongoDB / Monk / Express-Sessions 设置有问题 ("cannot serialize user")

Trouble with MongoDB / Monk / Express-Sessions setup ("cannot serialize user")

我正在尝试设置我的第一个 Mongo 身份验证系统,在我尝试使用 express-sessions 为用户创建会话之前,它一直运行良好。

我的用户路由很好——我可以注册和登录,它反映在数据库中——但是一旦我进入创建会话的步骤,我就得到 "Failed to serialize user into session" 错误。

我怀疑我设置会话的方式有问题:

//var MongoStore = require('connect-mongostore')(session);
app.use(session({
   //store: new MongoStore({ db: 'callcongress', url: 'mongodb://localhost:27017/callcongress', collections: ['usercollection', 'sessions']}),
  secret: process.env.SECRET_KEY,
  resave: false,
  saveUninitialized: true,
}));

storeMongoStore 行目前被注释掉了....将它们加入会导致以下情况发生(刷新页面时发生变化):

我尝试了 MongoStore 和一组不同的选项,所有选项都有相同的结果。

这是我登录时终端中发生的情况(console.logs 的控制台结果):

{ _id: 58ab42c1f0a05388ce3b2348,
  username: 'test16',
  name: 'test',
  password: 'a$i6sip04Jw6ylk83aOfnXIui7dszBIbe0OEdLSNVsRHQe8Xquy1r7O',
  email: 'test@test.com',
  district: 'New York 5th' }
got it
POST /auth/login 500 115.327 ms - 1003

下面是我的 serialize/deserialize 方法:

const passport = require('passport');


var mongo = require('mongodb');
var monk = require('monk');
var db = monk('localhost:27017/callcongress');
const userCollection = db.get('usercollection');

module.exports = () => {
  var user_cache = {};
  passport.serializeUser(function(user, next) {
    console.log('in serialize');
    let id = user._id;
    user_cache[id] = user;
    done(null, id);
  });

  passport.deserializeUser((id, done) => {
    console.log('in deserialize 1');
    userCollection.findById(id)
      .then((user) => {done(null, user_cache[id]);})
      .catch((err) => {done(err, null);});
  });
};

None of the console.logs in here output anything,这也让我有点困惑。不过,我本地策略末尾的那个确实有效。

我研究了 Mongoose 一些但现在不想使用它 -- 我正在努力研究 MongoDB 的概念,而没有在混合中添加其他东西.任何见解将不胜感激。

在没有模型的情况下,快速会话中的用户序列化似乎无法工作。我最终使用了 Mongoose。