我正在使用
并尝试使用身份验证实现副本集。
与mongoose的“正常”连接正在起作用:
mongo.connectSet('mongodb://user:secret@host:27017/test,
mongodb://host:27018,
mongodb://host:27019,
mongodb://host:27020', function (err) {
if (err) {
console.log("could not connect to DB: " + err);
}
});
但是如何让会话管理工作?!
app.use(express.session({
cookie: {maxAge: 60000 * 20}, // 20 minutes
secret: 'foo',
store: new MongoStore({
host: 'host',
port: [27017, 27018, 27019, 27020],
dbname: 'test',
rs_name: 'rstest',
username: 'user',
password: 'secret'
})
}));
这不起作用:(
这实际上是可能的吗?或者我应该使用不同的mongodb来存储会话数据?
答案 0 :(得分:3)
您确定使用的是connect-mongodb而不是connect-mongo吗?
我没有看到这些参数可以与connect-mongodb一起使用。
不要传递连接设置。 connect-mongodb可以改为使用直接db变量,这是mongodb.Db的一个实例。
这意味着你可以使用mongoose使用的相同连接,而不是让connect-mongodb为会话创建一个新连接。
对于mongoose,可以在mongoose.connection.db找到mongodb.Db实例。
因此,使用您的代码作为示例(假设mongo
是您的猫鼬对象):
app.use(express.session({
cookie: {maxAge: 60000 * 20}, // 20 minutes
secret: 'foo',
store: new MongoStore({db: mongo.connection.db})
}));