0

我正在尝试 MeanJS,它在 MongoDB 之上使用 Mongoose。鉴于我的项目需求,我宁愿使用 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 在我的应用程序中存储会话,以允许其他模块访问它?

4

1 回答 1

1

您可以将 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 正在使用本机驱动程序的连接字符串创建到数据库的新连接。我在不需要官方 mongo 驱动程序或 Monk 的情况下对此进行了测试。

您只需要运行一个 mongod 实例(在本例中为默认端口 27017)。

您可以在connect-mongo 自述文件中引用此方法

对于 Express 4.x(我使用),代码类似,但您必须express-session单独安装和 require 模块,因为它不再与 express 打包。还有两个选项是最新版本的 express-session 需要明确的,如下所示。

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'})
}));
于 2015-05-13T23:38:16.287 回答