gpt4 book ai didi

node.js - 如何将 node-mongodb-connection 用于 connect-mongo

转载 作者:可可西里 更新时间:2023-11-01 09:59:20 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com