node.js express.js: Session-Handling mit mongodb / mongoose

Im Moment speichere ich meine Sitzungsdaten im „memory store“, der mit connect (express) geliefert wird. Aber ich will / muss das für die Produktion ändern.

Die Anwendung verwendet mongodb und ich habe mongoose installiert, um alle db-Kommunikationen abzuwickeln.

z.B. Verbinden Sie sich nach der Initialisierung meiner App mit der Datenbank:

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

Ich habe das Modul connect-mongodb gefunden, weiß aber nicht, wie ich es mit mongoose implementieren soll oder ob es überhaupt möglich ist.
Ich muss so etwas hinzufügen:

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

oder muss ich meine db-verbindung ein zweites mal mit dem mongodb-modul direkt definieren?

Am Ende verwende ich ein bisschen von jeder Antwort, die zuvor gegeben wurde:

> Ich habe von Connect-Mongodb zu Connect-Mongo-Modul gewechselt
> Ich verwende ein allgemeines conf-Objekt, um meine Konfigurationsdaten zu speichern
> es gibt zwei db-verbindungen, weil es für mich einfacher zu handhaben ist (vielleicht später geändert, wenn / wenn eine neue Version von mongoose / express herauskommt)

Anforderungen:

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

conf Objekt:

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'
};

dann kann ich es so konfigurieren:

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);
  // ...
});

und schließlich mit mongoose ein zweites Mal eine Verbindung zu mongodb herstellen:

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);
});
Ursprüngliche URL:https://stackoverflow.com/questions/6819911/node-js-express-js-session-handling-with-mongodb-mongoose

Zitieren Sie bitte die URL dieses Artikels: node.js express.js: Session-Handling mit mongodb / mongoose