现在,我将会话数据存储在"内存存储"中,它与connect(express)Bundle 在一起.但我想/必须为生产改变这一点.

该应用程序使用mongodb,我安装了mongoose来处理所有db通信.

e、 g.在初始化我的应用程序后连接到数据库:

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模块第二次定义我的db连接吗?

推荐答案

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

  • 我从connect mongodb切换到connect 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,
    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);
});

Mongodb相关问答推荐

在MongoDB中,如何使用$in来匹配存储在数组变量中的值

Mongo,通过 Lookup 计算多个文档中数组中的项目

使用mongo'db.Decode(&dto)映射一个嵌套的 struct

优化游戏应用程序的反馈表单后端设计

Kotlin 使用初级构造实例化公开类

将数据从一个集合插入另一个集合的聚合

Mongo:查找具有 0 个关联文档的文档,成本更低

mongoDB vs mySQL - 为什么在某些方面比另一个更好

NodeJS + MongoDB:使用 findOne () 从集合中获取数据

mongoose递归填充

spring-data-mongo - 可选查询参数?

Mongoose 的保存回调是如何工作的?

使用 mongoimport 将日期(ISODate)导入 MongoDB

如何在 mongoDB 中聚合巨大的数组?

使用已排序的数据获取不同的值

在 mongodb 中的索引列上查找重复项的快速方法

Mongo: query by key one level deep

错误:需要数据和盐参数

是否可以在 Mongodb 中的两个数据库之间进行 $lookup 聚合?

MongoDB 引用的最佳实践