我正在尝试在MongoDB上使用Mongoose的MeanJS。鉴于我的项目需求,我宁愿使用Monk。我无法弄清楚会话商店背后的魔力。
var MongoStore = require('connect-mongo')(express);
var db = mongoose.connect("localhost:...", function(err){});
app.use(session({
secret: 'foo',
store: new MongoStore({db: db.connection.db})
}));
如何使用Monk在我的应用程序中存储会话,这将允许其他模块访问它?
答案 0 :(得分:0)
您可以将Monk用于其他mongoDB行为,并仍然使用connect-mongo来存储会话。
在Express 3.x中(根据您的代码,您似乎正在使用它):
var MongoStore = require('connect-mongo')(express),
app.use(session({
secret: 'foo',
store: new MongoStore({url: 'mongodb://localhost:27017/test'})
}));
在这种情况下,Monk实际上并未被使用,因为MongoStore正在使用native driver's connection string创建与db的新连接。我测试了这个,而不需要官方的mongo司机或Monk。
您只需要运行mongod实例(在本例中为默认端口27017)。
中引用此方法对于Express 4.x(我使用的),代码类似,但您必须单独安装并需要express-session
模块,因为它不再与express一起打包。另外,最新版本的快速会话需要明确的两个选项如下所示。
var session = require('express-session'),
MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
saveUninitialized: false,
resave: false,
store: new MongoStore({url: 'mongodb://localhost:27017/test'})
}));