微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js express.js:使用mongodb/mongoose进行会话处理

现在我把我的会话数据存储在“内存存储”,这是捆绑与连接(快递)。但我想/必须改变这生产。

应用程序使用mongodb和我安装mongoose处理所有db通信。

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

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-module定义我的db连接吗?

解决方法

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

>我从connect-mongodb切换到连接mongo模块
>我使用一个通用的conf对象来存储我的配置数据
>有两个db连接,因为它更容易为我处理(也许以后改变,如果/当一个新版本的mongoose / express出来)

要求:

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

conf对象:

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,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);
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐