我连接到我的数据库,如下所示:
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共享数据库连接,但似乎无法正常工作。我该怎么做?
编辑:我在我的数据库上使用身份验证,但在执行新的MongoStore()后,我收到以下错误:
not authorized for query on site.system.indexes
答案 0 :(得分:5)
这就是我的工作方式,
var connectionString = "mongodb://username:password@localhost: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选项,否则我们会继续关闭连接或者没有授权的错误。