【问题标题】:connect-mongo: why can't I write to the 'sessions' collection?connect-mongo:为什么我不能写入“会话”集合?
【发布时间】:2018-08-13 01:34:00
【问题描述】:

我正在使用connect-mongoexpress-session,会话数据正在按预期写入Mongo。

但是,我想重用 sessions 集合,connect-mongo 使用该集合在该集合的顶部写入我自己的字段。

我在sessions.js 中定义了自己的会话模型,例如:

const mongoose = require('mongoose');

const SessionSchema = new mongoose.Schema({
    _id: {},
    session: {},
    expires: {},
    myNewVariable: {}
});

const Sessions = mongoose.model('sessions', SessionSchema);

module.exports = {Sessions};

然后,在我的服务器文件中:

const session = require('express-session');
const {mongoose} = require('./db/mongoose.js');
const {Sessions} = require('./models/sessions.js');
const MongoStore = require('connect-mongo')(session);

app.use(session({
  secret: SECRET,
  resave: true,
  saveUninitialized: true,
  store: new MongoStore({ mongooseConnection: mongoose.connection })
}));

app.post('/myRoute', function(req, res, next) {
      Sessions.findOneAndUpdate(
        {_id: req.session.id},
        {$set:{myNewVariable: myNewValue}},
        {new: true}).then((session) => {

            console.log('session: ' + JSON.stringify(session)); // prints OK!

            // Do something with the session
      }).catch((e) => console.log('Something went wrong: %s', e));
});

真正让我吃惊的是,上面的打印语句实际上记录了更新后的会话对象。但是,当我稍后检查数据库时,文档没有更新。

我也尝试过创建一个完全不同的SessionsAlternative 集合。在这种情况下,集合 会正确更新。这将是一个解决方案,但它不会是最佳的,因为从概念上讲,我尝试编写的内容应该属于单个会话集合。

这有可能吗,如果有,我做错了什么?

【问题讨论】:

    标签: javascript express mongoose express-session connect-mongo


    【解决方案1】:

    为什么不直接保存到会话中?

    req.session.myNewVariable = "abc";

    【讨论】:

      猜你喜欢
      • 2013-06-19
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2013-04-15
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多