session - node.js + express.js : session handling

现在我将 session 数据存储在与 connect(express) 捆绑在一起的“内存存储”中。但我想/必须改变它以进行生产。

应用程序正在使用 mongodb,我安装了 mongoose 来处理所有数据库通信。

例如初始化我的应用后连接到数据库:

var mongo = require('mongoose');
mongo.connect('mongodb://localhost/myDb');
mongo.connection.on('open', function () {
  app.listen(3000);
}

我找到了 connect-mongodb 模块,但我不知道如何使用 mongoose 来实现它,或者它是否真的可能? 我需要添加这样的内容:

var mongoStore = require('connect-mongodb');
// ...
app.use(express.session({
  secret: 'topsecret',
  maxAge: new Date(Date.now() + 3600000),
  store: new mongoStore({ db: 'myDb' })
}));

还是我必须直接使用 mongodb 模块再次定义我的数据库连接?

最佳答案

最后,我使用了之前给出的每个答案:

  • 我从 connect-mongodb 切换到 connect-mongo 模块
  • 我正在使用通用 conf 对象来存储我的配置数据
  • 有两个数据库连接,因为它对我来说更容易处理(以后可能会更改,如果/当新版本的 mongoose/express 出现时)

要求:

var express = require('express'),
    MongoStore = require('connect-mongo')(express),
    mongo = require('mongoose');

配置对象:

var conf = {
  db: {
    db: 'myDb',
    host: '192.168.1.111',
    port: 6646,  // optional, default: 27017
    username: 'admin', // optional
    password: 'secret', // optional
    collection: 'mySessions' // optional, default: sessions
  },
  secret: '076ee61d63aa10a125ea872411e433b9'
};

然后我可以这样配置它:

app.configure(function(){
  // ...
  app.use(express.cookieParser());
  app.use(express.session({
    secret: conf.secret,
    maxAge: new Date(Date.now() + 3600000),
    store: new MongoStore(conf.db)
  }));
  // important that this comes after session management
  app.use(app.router);
  // ...
});

最后使用 mongoose 再次连接到 mongodb:

var dbUrl = 'mongodb://';
dbUrl += conf.db.username + ':' + conf.db.password + '@';
dbUrl += conf.db.host + ':' + conf.db.port;
dbUrl += '/' + conf.db.db;
mongo.connect(dbUrl);
mongo.connection.on('open', function () {
  app.listen(3000);
});

关于session - node.js + express.js : session handling with mongodb/mongoose,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6819911/

相关文章:

mongodb - 如何通过一次调用将一组对象推送到 Mongoose 中的数组中?

mongodb - 执行 mongoexport 时 "too many positional op

python - Django session

mongodb - 一个数据库的 Mongorestore 给我带来了麻烦

mongodb - Mongoose 和独特的领域

python - 从字符串中删除每个非 utf-8 符号

mongodb - 如何停止在 mongodb 集合中插入重复文档

node.js - Mongoose:模式与模型?

mongodb - MongoDB可靠吗?

arrays - 查询 MongoDB 以匹配数组中的第一项