nodejs.Какую библиотеку использовать для хранения сессии в MongoDB? - PullRequest
2 голосов
/ 15 декабря 2011

Я нашел три библиотеки хранения сеансов в MongoDB: connect-mongodb , connect-mongo , connect-session-mongo

Что лучше?

РЕДАКТИРОВАТЬ: Так что, если я буду использовать 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 ]

2 голосов
/ 16 декабря 2011

Connect-mongodb установит для вас соединение автоматически.Вы передаете строку, которая является именем базы данных и, необязательно, хостом (по умолчанию localhost).Вот как мы это используем.

app.use(express.session({
    secret: "x2kjh2323hjhjk32hjk23uhi23",
    store: new MongoStore({host: "200.11.11.11", db: 'sessions'}),
    cookie: {maxAge: 604800000}
}))
1 голос
/ 15 декабря 2011

https://github.com/masylum/connect-mongodb указан на стороннем промежуточном программном обеспечении (хранилища сеансов) на странице Connect, у него наибольшее количество подписчиков (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

0 голосов
/ 16 декабря 2011

из API doc : к сожалению, начиная с версии 1. * Я не могу этого сделать. Эта версия не совместима с версиями 0. *. Теперь вы должны передать соединение mongodb или конфигурацию сервера. При обновлении я рекомендую удалить данные вашей текущей сессии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...