javascript - Express:实现 MongoDB session 存储

标签 javascript node.js mongodb express session

目前,我在 index.js 顶部要求并定义 express-session 选项,如下所示:

const session = require(`express-session`)({
    secret: `MyEpicSecret`,
    resave: true,
    saveUninitialized: true,
    cookie: {maxAge: 1000 * 60} // 1 minute: for testing
}),

我将它与我的 Express 应用程序一起使用:

app.use(session);

此布局很重要,因为我稍后将 session 传递到 index.js 底部的 socket.io 模块:

require(`./modules/socket.js`)(server, session);


通过上述设计流程,我的应用程序可以正常运行,并且 session 可以完美地处理和管理。我现在的目标是实现 connect-mongo 将 session 保存到 MongoDB。他们的documentation有点模糊,但据我所知,我需要首先需要 express-session 模块,然后在 app.use( )。这是一个问题 - 如果我在 app.use() 中定义选项,当我需要 socket.js 时,我将不再能够传递配置的 session (它的选项)模块。

我想要做的事情是这样的:

const session = require('express-session')({
    secret: `MyEpicSecret`,
    resave: true,
    saveUninitialized: true,
    cookie: {maxAge: 1000 * 60}, // 1 minute: for testing
    store: new MongoStore(options)
});
const MongoStore = require('connect-mongo')(session);

app.use(session);

这是不可能的 - MongoStore 在我尝试使用它时尚未定义。如果我将 MongoStore 向上移动,当我需要 MongoStore 时,session 将是未定义的。

我仍在学习 Express 的诀窍,非常感谢任何人能够提供的帮助:)

最佳答案

您仍然可以将 session({...}) 调用的结果分配给变量并将其传递。

const expressSession = require('express-session');
const MongoStore = require('connect-mongo')(expressSession);

const session = expressSession({
    secret: `MyEpicSecret`,
    resave: true,
    saveUninitialized: true,
    cookie: {maxAge: 1000 * 60}, // 1 minute: for testing
    store: new MongoStore(options)
});

app.use(session);
...
require(`./modules/socket.js`)(server, session);

关于javascript - Express:实现 MongoDB session 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59854761/

相关文章:

javascript - Mongoose - 如何确定查询中是否已存在嵌套对象?

javascript - Reactjs 从列表中删除行后更新 UI

javascript - 如何动态地在 React JSX 元素上设置属性?

javascript - Express.js | express.Router及路由参数输入

javascript - 应该如何处理 ajax 加载的局部 View 中的 javascript?

javascript - 无法将数据从js传递到node.js中的jade

mongodb - 在mongodb中计算百分比

node.js - Mongoose 中的一对多关系

node.js - 针对不同的 NODE_MODULE_VERSION 编译 - Tree-sitter 解析器、ATOM 包

javascript - 从 HTTP 引用 URL 中提取字段/属性