2013-06-09 2 views
2

Я делаю подключение к моей базе данных, как следующее:Как использовать узел-MongoDB-соединение для подключения-Монго

var mongoClient = new MongoClient(new Server('localhost', 27017, {auto_reconnect: true})); 
mongoClient.open(function (err, mongoClient) { 
    var db = mongoClient.db('db_name'); 
    db.authenticate('user', 'password', function() {err, result} { 
    if (err || !result) return console.log('error'); 

    app.use(express.session({  
     store: new MongoStore({ 
      db: db 
     }) 
    }); 
    }); 
}); 

И я хочу поделиться подключения к БД с MongoStore, но это, похоже, не работает. Как мне это сделать?

EDIT: Я использую проверку подлинности на моей базе данных, но после того, как новый MongoStore() получить исполняет Я получаю следующее сообщение об ошибке:

not authorized for query on site.system.indexes 
+0

Существует '});' отсутствует для 'app.use'. –

+0

? Вы уверены? – Erik

+0

Добавил это как ответ, чтобы было ясно. Если это не проблема, просим пояснить: «похоже, что это не работает». Любые сообщения об ошибках? –

ответ

5

Вот как это работает для меня,

var connectionString = "mongodb://username:[email protected]:27017/db_name"; 
var dbOptions = { 
server:{ 
    'auto_reconnect': true, 
    'poolSize': 20, 
    socketOptions: {keepAlive: 1} 
    } 
} 
// For long running applictions it is often prudent to enable keepAlive. Without it, 
// after some period of time you may start to see "connection closed" errors for what 
// seems like no reason. 
MongoClient.connect(connectionString, dbOptions, function(err, db) { 
    if(err){ 
     console.log(err);    
    } 

app.use(express.session({ 
     store:new mongoStore({db: db}), 
     secret: 'secret' 
    })); 
}) 

Это отлично работает для меня, и оно не даст вам также никаких разрешенных вопросов. Раньше нам не нужно было указывать параметр keepAlive, и он отлично работает без него, но с выпуском mongodb 2.4 для приложений с длительным сроком действия нам нужно предоставить опцию keepAlive, иначе мы будем продолжать получать закрытые или неавторизованные ошибки.

+0

Я думаю, что проблема в модуле connect-mongo. https://github.com/kcbanner/connect-mongo/issues/70 – Erik

+0

yup это, но если вы установите параметр keepalive, то connect-mongo отлично работает. Я использую ту же конфигурацию в производстве без проблем. –

+0

Спасибо! Я попробую! Можете ли вы показать мне проект в Интернете? – Erik