hier ist eine einfache Verbindung, um den Express-Sitzungsspeicher zu verwenden. Dieser Fehler wird weiterhin angezeigt, obwohl der Text direkt aus dem Buch stammt. Ich bin mir ziemlich sicher, dass dies etwas mit der Initialisierung eines neuen MongoStore-Objekts zu tun hat.
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);
URL zu neuer MongoStore()
hinzufügen
var sessionStore = new MongoStore({
Host: '127.0.0.1',
port: '27017',
db: 'session',
url: 'mongodb://localhost:27017/demo'
});
Der Code in der Frage stammt aus dem Buch Beginning Node.js von Basarat ALi Syed .
Da Sie eine Sitzungssammlung verwenden, sollte dies so sein
app.use(expressSession({
store: new mongoStore({
mongooseConnection: mongoose.connection,
collection: 'session',
})
}));
Überprüfen Sie den Abschnitt Verwenden anderer mit Connect kompatibler Sitzungsspeicher in http://sailsjs.com/documentation/reference/configuration/sails-config-session .
Bezüglich des Moduls connect-mongo gelten Versionsbeschränkungen. Das Beispiel zeigt einen anderen Parametersatz als die in der Dokumentation aufgeführten:
// 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
Ich musste eigentlich nur benutzen:
// Note: user, pass and port are optional
adapter: 'connect-mongo',
url: 'mongodb://localhost:27017/sails',
collection: 'sessions'
Ich hoffe es hilft!
Sie müssen eine Datenbankverbindung definieren und diese dann an den neuen MongoStore übergeben. Der von Ihnen verwendete Parameter 'db:' erwartet eine MongoDB-Treiberverbindung, keine URL zu einer Mongo-Datenbank. Dafür solltest du so etwas machen:
var sessionStore = new MongoStore({ url:'mongodb://localhost:27017/test');
Hier ist ein Beispiel, von dem ich weiß, dass es funktioniert, obwohl es Mongoose anstelle des MongoDB-Treibers verwendet.
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection });