繁体   English   中英

如何使用node-mongodb-connection进行connect-mongo

[英]How to use node-mongodb-connection for connect-mongo

我以如下方式连接到数据库:

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

这就是我的工作方式

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选项,否则我们将保持关闭连接状态或出现未授权的错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM