我正在使用
- Node 0.4.11
- express 2.4.6
- mongodb 1.8.3
- Mongoose 2.1.2
- 连接-mongodb 1.0.0
并尝试通过身份验证来实现副本集。
- 我想在数据库中存储不同类型的应用程序数据
- 我想在数据库中存储express' session 数据
与 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);
}
});
但是如何让 session 管理发挥作用?!
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 来存储 session 数据?
最佳答案
您确定使用的是 connect-mongodb 而不是 connect-mongo 吗?
我不知道这些参数可以在何处与 connect-mongodb 一起使用。
不要传入连接设置。 connect-mongodb 可以采用直接 db 变量,它是 mongodb.Db 的实例。
这意味着您可以使用 mongoose 使用的相同连接,而不是让 connect-mongodb 仅为 session 创建新连接。
对于 mongoose,可以在 mongoose.connection.db 找到 mongodb.Db 实例。
因此以您的代码为例(假设 mongo
是您的 mongoose 对象):
app.use(express.session({
cookie: {maxAge: 60000 * 20}, // 20 minutes
secret: 'foo',
store: new MongoStore({db: mongo.connection.db})
}));
关于mongodb - node.js + express + mongodb 任何人都尝试过使用带有副本集的express' session 管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7351318/