node.js + express + mongodb любой, кто когда-либо пытался использовать экспресс-управление сессиями с наборами реплик - PullRequest
2 голосов
/ 08 сентября 2011

Я использую

  • узел 0.4.11
  • Экспресс 2.4.6
  • mongodb 1.8.3
  • mongoose 2.1.2
  • connect-mongodb 1.0.0

и пытается реализовать наборы реплик с аутентификацией.

  1. Я хочу хранить различные типы данных приложения вDB
  2. Я хочу хранить данные экспресс-сеанса в DB

, работает "нормальное" соединение с mongoose:

mongo.connectSet('mongodb://user:secret@host: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 для хранения данных сеанса?

1 Ответ

3 голосов
/ 13 сентября 2011

Вы уверены, что используете connect-mongodb, а не connect-mongo?

Я не вижу, где эти параметры можно использовать с connect-mongodb.

Не передаватьв настройках подключения.connect-mongodb может вместо этого принимать прямую переменную db, которая является экземпляром mongodb.Db.

Это означает, что вы можете использовать то же соединение, которое использует mongoose, вместо того, чтобы connect-mongodb создавал новое соединение только длясеансы.

Для mongoose экземпляр mongodb.Db можно найти по адресу mongoose.connection.db.

Итак, используя ваш код в качестве примера (при условии, что mongo - ваш объект mongoose):

app.use(express.session({
            cookie: {maxAge: 60000 * 20}, // 20 minutes
            secret: 'foo',
            store: new MongoStore({db: mongo.connection.db})
          }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...