2016-01-16 18 views
5

qui è una semplice connessione per utilizzare l'archivio di sessioni espresso, continua a sbattere fuori questo errore anche se il testo è giusto dal libro. Sono abbastanza sicuro che abbia qualcosa a che fare con l'inizializzazione dell'oggetto 'nuovo MongoStore'.Errore: strategia di connessione non trovata MongoDB

var express = require('express'), 
    expressSession = require('express-session'); 

var MongoStore = require('connect-mongo/es5')(expressSession); 
var sessionStore = new MongoStore({ 
    host: '127.0.0.1', 
    port: '27017', 
    db: 'session' 
}); 

var app = express() 
    .use(expressSession({ 
     secret: 'my secret sign key', 
     store: sessionStore 
    })) 
    .use('/home', function (req, res) { 
     if (req.session.views) { 
     req.session.views++; 
     } 
     else { 
     req.session.views = 1; 
     } 
     res.end('Total views for you:' + req.session.views); 
    }) 
    .use('/reset', function(req, res) { 
     delete req.session.views; 
     res.end('Cleared all your views'); 
    }) 
    .listen(3000); 

risposta

0

È necessario definire una connessione al database e quindi passarla al nuovo MongoStore. Il parametro 'db:' che stai usando si aspetta un collegamento MongoDB, non un url ad un Database Mongo. Per questo, si dovrebbe fare qualcosa di simile:

var sessionStore = new MongoStore({ url:'mongodb://localhost:27017/test'); 

Ecco un esempio che conosco opere, anche se usa Mongoose invece del driver MongoDB.

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost:27017/test'); 
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection }); 
2

Dal momento che si sta utilizzando una raccolta di sessione e quindi dovrebbe essere simile a questo

app.use(expressSession({ 
     store: new mongoStore({ 
      mongooseConnection: mongoose.connection, 
      collection: 'session', 
     }) 
    })); 
5

Aggiungi URL al nuovo MongoStore()

var sessionStore = new MongoStore({ 
     host: '127.0.0.1', 
     port: '27017', 
     db: 'session', 
     url: 'mongodb://localhost:27017/demo' 
    }); 

Il codice in questione è tratto dal libro Beginning Node.jsdi Basarat Ali Syed.

+0

Sembra che la riga 'db: 'session'' non abbia alcun impatto. Ho commentato questa riga e ho aggiunto l'opzione 'url' come detto da @alturium e ha funzionato ancora. In realtà crea una collezione con il nome 'sessions' all'interno del database' demo'. –

1

Verificare la sezione Utilizzare altri negozi di sessione compatibili con Connect in http://sailsjs.com/documentation/reference/configuration/sails-config-session.

Non ci sono limitazioni di versione considerare il modulo Connect-mongo e l'esempio mostra un diverso insieme di parametri rispetto a quelli nella documentazione:

// Note: user, pass and port are optional 
    adapter: 'connect-mongo', 
    url: 'mongodb://user:[email protected]:port/database', 
    collection: 'sessions', 
    auto_reconnect: false, 
    ssl: false, 
    stringify: true 

realtà ho solo dovuto usare:

// Note: user, pass and port are optional 
    adapter: 'connect-mongo', 
    url: 'mongodb://localhost:27017/sails', 
    collection: 'sessions' 

Spero che aiuti!

Problemi correlati