的NodeJS。我应该使用什么库来存储MongoDB中的会话

时间:2011-12-15 19:12:23

标签: session mongodb node.js

我在MongoDB中找到了三个会话库: connect-mongodb connect-mongo connect-session-mongo < / p>

哪个最好?

编辑:因此,如果我将使用connect-mongodb,我必须建立两个数据库连接。首先是会话商店:

var connect = require('connect')
  , Db = require('mongodb').Db
  , Server = require('mongodb').Server
  , server_config = new Server('localhost', 27017, {auto_reconnect: true, 
    native_parser: true})
  , db = new Db('test', server_config, {})
  , mongoStore = require('connect-mongodb');

connect.createServer(
  connect.bodyParser(),
  connect.cookieParser(),
  connect.session({
    cookie: {maxAge: 60000 * 20} // 20 minutes
  , secret: 'foo'
  , store: new mongoStore({db: db})
})
);

我的猫鼬连接的第二个:

var mongoose = require('mongoose');
db = mongoose.connect('mongodb://localhost/test');
....

是这样吗?

3 个答案:

答案 0 :(得分:2)

Connect-mongodb会自动为您进行连接。您传入的字符串是数据库名称,也可以是主机(默认情况下为localhost)。以下是我们如何使用它。

app.use(express.session({
    secret: "x2kjh2323hjhjk32hjk23uhi23",
    store: new MongoStore({host: "200.11.11.11", db: 'sessions'}),
    cookie: {maxAge: 604800000}
}))

答案 1 :(得分:1)

https://github.com/masylum/connect-mongodb列在Connect的3rd party middleware(会话商店)页面上,它拥有最多的关注者(111)并且它是主动更新的(最后更新~8小时前),所以我可能会如果我是你,请选择那个。

编辑:

关于你的第二个问题,如何使用connect-mongodb和Mongoose,这是一个例子:

var connect= require('connect'),
mongoose = require('mongoose'),
mongoStore = require('connect-mongodb'),
my_db = "mongodb://localhost/test",
db;

connect.createServer(
  ...
  connect.session({ store: mongoStore(my_db, secret: 'topsecret' }));
  ...
);

db = mongoose.connect(my_db);

Nodepad是一个真正的应用程序,它使用Express,connect-mongodb和Mongoose,您可以在这里查看主应用程序文件:https://github.com/alexyoung/nodepad/blob/master/app.js

答案 2 :(得分:0)

来自API doc 的

:遗憾的是从版本1开始。*我无法做到这一点。此版本与0. *版本不兼容。现在您必须传递mongodb连接或服务器配置。在更新时,我建议删除您当前的会话收集数据