2016-01-16 2 views
5

вот простое подключение для использования хранилища экспресс-сессий, оно продолжает выбивать эту ошибку, даже если текст находится прямо из книги. Я уверен, что имеет какое-то отношение к инициализации объекта «new MongoStore».Ошибка: Стратегия подключения не найдена 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); 

ответ

0

Необходимо определить соединение с базой данных, а затем передать его новому монгольскому магазину. Используемый вами параметр «db:» ожидает подключения драйвера MongoDB, а не URL-адрес базы данных Mongo. Для этого, вы должны сделать что-то вроде этого:

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

Вот пример, который я знаю, работает, хотя она использует Мангуст вместо драйвера MongoDB.

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

Поскольку вы используете коллекцию сеансов поэтому она должна быть, как это

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

Добавить URL к новому MongoStore()

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

Код в вопросе из книги Начало Node.jsby Basarat Ali Syed.

+0

Похоже, что строка 'db: 'session'' не имеет никакого влияния. Я прокомментировал эту строку и просто добавил параметр «url», как сказал @alturium, и он все еще работал. На самом деле он создает коллекцию с именем 'session' внутри' demo' базы данных. –

1

Проверьте раздел Использование других совместимых с подключением сессионных магазинов в http://sailsjs.com/documentation/reference/configuration/sails-config-session.

Есть версия ограничение рассматривает Connect-Монго модуля и пример показывает другой набор параметров, чем те, в документации:

// 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 

Я на самом деле был только использовать:

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

Надеюсь, это поможет!

Смежные вопросы