gpt4 book ai didi

mongodb - node.js + express + mongodb 任何人都曾尝试使用 express 的副本集 session 管理

转载 作者:可可西里 更新时间:2023-11-01 10:07:38 26 4
gpt4 key购买 nike

我正在使用

  • Node 0.4.11
  • 表达 2.4.6
  • mongodb 1.8.3
  • Mongoose 2.1.2
  • 连接-mongodb 1.0.0

并尝试通过身份验证实现副本集。

  1. 我想在数据库中存储不同类型的应用程序数据
  2. 我想在数据库中存储 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,mongodb.Db 实例可以在 mongoose.connection.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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com