错误:未找到连接策略MongoDB

Spe*_*ire 10 mongodb connect-mongo express-session

这是一个使用快速会话存储的简单连接,即使文本是正确的,它仍然会发出这个错误.我很确定与"新MongoStore"对象初始化有关.

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);
Run Code Online (Sandbox Code Playgroud)

alt*_*ium 11

将URL添加到新的 MongoStore()

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

问题中的代码来自Basarat Ali Syed的Beginning Node.js 一书.


Arm*_*ega 7

因为您正在使用会话集合所以它应该是这样的

    app.use(expressSession({
      store: new mongoStore({
          mongooseConnection: mongoose.connection,
          collection: 'session',
      })
   }));
Run Code Online (Sandbox Code Playgroud)


小智 1

您需要定义一个数据库连接,然后将其传递给新的 MongoStore。您使用的“db:”参数期望 MongoDB 驱动程序连接,而不是 Mongo 数据库的 url。为此,你应该这样做:

var sessionStore = new MongoStore({ url:'mongodb://localhost:27017/test');
Run Code Online (Sandbox Code Playgroud)

这是一个我知道有效的示例,尽管它使用 Mongoose 而不是 MongoDB 驱动程序。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/test');
var sessionStore = new MongoStore({mongooseConnection: mongoose.connection });
Run Code Online (Sandbox Code Playgroud)