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

标签 node.js mongodb express node-mongodb-native

我像下面这样连接到我的数据库:

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 共享数据库连接,但它似乎不起作用。我该怎么做?

编辑:我在数据库上使用身份验证,但在执行 new MongoStore() get 后,出现以下错误:

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 选项,否则我们会不断收到连接关闭或未经授权的错误。

关于node.js - 如何使用 node-mongodb-connection 进行 connect-mongo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009395/

相关文章:

javascript - 无法为nodejs安装express和socket.io

javascript - 在nodejs中使用stringify获取cookie ID

mongodb - 如何从文档中删除字段

javascript - 从 Node.js 服务器接收 JSON 对象

node.js - 如何在Express和NodeJS中进行Mongoose错误处理。

javascript - 在 Express 路由器中使用 multer 进行文件上传

javascript - 在 Node.js 中请求信息时延迟 Promise 请求

javascript - 如何使用socket.io从客户端向服务器插入数据?

javascript - 如何使用 node.js 和 express 将结果写入文件?

javascript - 如何使用 AWS JavaScript SDK (dynamoDB) 处理 UnprocessedItems?