2011-09-08 38 views
2

我使用的node.js +快递+ MongoDB的人试过用特快会话管理副本集

  • 节点0.4.11
  • 表达2.4.6
  • 的MongoDB 1.8.3
  • 猫鼬2.1.2
  • 连接,MongoDB的1.0.0

,并试图实现replic具有认证的集合。

  1. 我想不同类型的应用程序,数据存储在数据库
  2. 我想存储在数据库中明确的会话数据

与猫鼬‘正常’的连接工作:

mongo.connectSet('mongodb://user:[email protected]: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存储会话数据?

回答

3

你确定你使用的连接,MongoDB的,而不是连接 - 蒙戈?

我没有看到这些参数可与连接,MongoDB的使用。

不要在连接设置通过。CON nect-mongodb可以直接使用db变量,它是mongodb.Db的一个实例。

这意味着您可以使用猫鼬使用的相同连接,而不是使用connect-mongodb为会话创建新连接。

对于猫鼬,可以在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}) 
      })); 
+0

是的 - 很肯定。但它的工作原理完全相同。谢谢。 – pkyeck