wake-up-neo.com

Fehler: Verbindungsstrategie nicht gefunden MongoDB

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);
8
Spencer Hire

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 .

9
alturium

Da Sie eine Sitzungssammlung verwenden, sollte dies so sein

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

Ü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!

1
Davo

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 });
0
Matthew Charles