Javascript Express:实现MongoDB会话存储
目前,我需要并定义Javascript Express:实现MongoDB会话存储,javascript,node.js,mongodb,express,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.
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);
此布局很重要,因为我稍后会将会话
传递到index.js
底部的socket.io模块:
require(`./modules/socket.js`)(server, session);
通过上述设计流程,我的应用程序可以正常运行,会话的处理和管理完美无瑕。我现在的目标是实现
connectmongo
,将会话保存到MongoDB。它们有点模糊,但据我所知,我需要先使用express session
模块,然后在app.use()中定义稍后要使用的选项。这是一个问题-如果我在app.use()
中定义了选项,当我需要我的socket.js
模块时,我将无法再通过配置的会话(它的选项)
我想做的事情是:
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时,会话
将是未定义的
我仍在学习express的诀窍,非常感谢任何人能够提供的帮助:)试试这个:
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: `MyEpicSecret`,
resave: true,
saveUninitialized: true,
cookie: {maxAge: 1000 * 60} // 1 minute: for testing
store: new MongoStore(options)
}));
试试这个:
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: `MyEpicSecret`,
resave: true,
saveUninitialized: true,
cookie: {maxAge: 1000 * 60} // 1 minute: for testing
store: new MongoStore(options)
}));
您仍然可以将会话({…})
调用的结果分配给变量并传递
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);
您仍然可以将会话({…})
调用的结果分配给变量并传递
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);
如原问题所述,当我在index.js
底部需要时,使用此方法我不会将会话
的选项对象传递给我的socket.js
模块,这就是为什么我需要模块时必须定义选项的原因。如原问题所述,通过使用此方法,当我在index.js
底部需要时,我不会将会话
的选项对象传递给我的socket.js
模块-这就是为什么我需要模块时必须定义选项的原因。我对如何需要和使用这些特定模块的理解有点模糊。这对我帮助很大。非常感谢您的帮助:)。我对如何要求和使用这些特定模块的理解有点模糊。这对我帮助很大。非常感谢您的帮助:)。