未处理的拒绝 MongoError:无法连接到 MongoDB 中的服务器

Posted

技术标签:

【中文标题】未处理的拒绝 MongoError:无法连接到 MongoDB 中的服务器【英文标题】:Unhandled rejection MongoError: cannot connect to server in MongoDB 【发布时间】:2016-09-09 15:29:34 【问题描述】:

我在运行我的 meanjs 项目时得到了Unhandled rejection MongoError: cannot connect to server

以前运行良好,但更新nodejs 5.11.1mongodb 3.2.6"mongoose": "^4.4.16""connect-mongo": "^1.1.0", 时出现此错误。

未处理的拒绝 MongoError: 无法连接到服务器 在 Collection.listIndexes (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/collection.js:1750:11) 在 indexInformation (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/db.js:1625:25) 在 Db.indexInformation (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/db.js:1589:44) 在 ensureIndex (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/db.js:1082:8) 在 Db.ensureIndex (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/db.js:1058:44) 在 ensureIndex (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/collection.js:1820:13) 在 Collection.ensureIndex (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/mongodb/lib/collection.js:1808:44) 在 MongoStore.setAutoRemoveAsync (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/connect-mongo/src/index.js:123:40) 在 MongoStore.handleNewConnectionAsync (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/connect-mongo/src/index.js:116:18) 在 MongoStore (/home/shaishab/Project/Open-Source/BS-Commerce/node_modules/connect-mongo/src/index.js:95:26) 在 module.exports (/home/shaishab/Project/Open-Source/BS-Commerce/config/express.js:101:10) 在对象。 (/home/shaishab/Project/Open-Source/BS-Commerce/server.js:31:38) 在 Module._compile (module.js:413:34) 在 Object.Module._extensions..js (module.js:422:10)

在配置文件代码中

var session = require('express-session'),
    MongoStore = require('connect-mongo')(session),
    mongoose = require('mongoose');

var db = mongoose.connect('dbUrl');
app.use(session(
        saveUninitialized: true,
        resave: true,
        secret: config.sessionSecret,
        store: new MongoStore(
            db: db.connection.db,
            collection: config.sessionCollection
        )
));

谁能帮帮我?

【问题讨论】:

你能检查一下 mongodb 是否正在使用指定的连接字符串运行吗? 从 mongo shell 我可以访问我的数据库 @Astro 【参考方案1】:

我终于知道发生错误的地方了!我发布这个答案是因为它可能会帮助其他人。

更新mongooseconnect-mongo版本时出现问题。

需要更新:

MongoStore = require('connect-mongo')(session)

app.use(session(
        saveUninitialized: true,
        resave: true,
        secret: config.sessionSecret,
        store: new MongoStore(
            mongooseConnection: db.connection,
            collection: config.sessionCollection
        )
    ));

主要问题在MongoStore(db: db.connection.db而不是使用

db: db.connection.db

现在使用

mongooseConnection: db.connection

这解决了我的问题:)

【讨论】:

【参考方案2】:

由于我没有db variable,我的解决方案是:

var mongoStore = require('connect-mongo')(session);
var mongoose = require('mongoose');

const connection = mongoose.createConnection('mongodb://localhost/chester');

app.use(session(
    secret: config.secrets.session,
    resave: true,
    saveUninitialized: true,
    store: new mongoStore(mongooseConnection: connection)
  ));

希望对你有帮助

【讨论】:

以上是关于未处理的拒绝 MongoError:无法连接到 MongoDB 中的服务器的主要内容,如果未能解决你的问题,请参考以下文章

(节点:32032)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝 id:1):MongoError:身份验证失败

未处理的承诺拒绝:错误:URL 格式错误,无法解析

无法连接到 mongolab,出现 MongoError: auth failed

无法连接到 mongolab,出现 MongoError: auth failed

当我尝试在命令提示符下连接到 mongodb 时,它会显示错误如何解决?

在docker上使用laravel时无法连接到mysql数据库(未找到,pdo,连接被拒绝)