如何解决 Mongoose Connect UNKNOWN?

Posted

技术标签:

【中文标题】如何解决 Mongoose Connect UNKNOWN?【英文标题】:How to resolve Mongoose Connect UNKNOWN? 【发布时间】:2015-09-30 11:14:44 【问题描述】:

我正在使用 Node、Express 和 MongoDB 构建一个 REST API 服务。我安装了 MongoDB,它在我的 PC 上的 localhost:27017 上正常运行。我可以添加收藏并阅读它们。在我的 app.js 文件中,我有这个设置

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');
    
mongoose.connect('mongodb://127.0.0.1:27017/bookAPI');
    
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () 
    console.log("h");
);
    
var app = express();
app.use(bodyParser.urlencoded( extended: true ));
app.use(bodyParser.json());
    
var port = process.env.PORT || 3000;
app.use('/api', require('./routes/api.js'));
    
app.listen(port, function() 
    console.log('Running on port ' + port);
);

我总是得到一个错误-MongoError - cannot connect UNKNOWN。 我已经搜索了几个小时,但没有找到任何解决方案。我该如何修复它,以便它可以连接到正常工作的 MongoDB...?

【问题讨论】:

你有mongod实例在同一台机器上运行吗?另外,尝试 mongodb://localhost:27017/bookAPI 我确实运行了 mongod 并且还插入了一些虚拟数据。我在另一台安装了 Win7 的 PC 上测试了相同的实例,它工作正常。后来发现新版本的mongodb不支持XP。 【参考方案1】:

我通过安装稳定的猫鼬解决了这个问题。 它是 mongoose 4.x,我在 winxp 中安装了 3.8 (npm install mongoose@3.8.*)。

【讨论】:

【参考方案2】:
const dbpath = "mongodb+srv://127.0.0.1/bookAPI";

// Data connection
mongoose.connect(dbpath, user: 'username', pass: 'password', useUnifiedTopology: true , useNewUrlParser: true )
  .then(()=> console.log("Now connected to MongoDB!"))
  .catch(err=> console.error("Something went wrong", err));

我使用的是 Compass,这段代码运行良好。

【讨论】:

发现问题! Mongoose 文档让您将用户名和密码放入 dbpath,将它们添加到选项中就像一个魅力。【参考方案3】:

尝试改变:

mongoose.connect('mongodb://127.0.0.1:27017/bookAPI')

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () 
  console.log("h");
);

进入:

var appConnection = mongoose.createConnection('mongodb://127.0.0.1:27017/bookAPI');

appConnection.on('error', console.error.bind(console, 'connection error:'));
appConnection.once('open', function callback () 
  console.log("h");
);

【讨论】:

【参考方案4】:

试试这个:

var connectionString = "mongodb://" + host + ":" + dport + "/" + dbName;
mongoose.connect(connectionString, function(err) 
    if (err) 
        console.log(err)
     else 
        console.log('Connected to database ' +dbName);
    
);

【讨论】:

【参考方案5】:

mongoose.connect('mongodb://127.0.0.1/bookAPI');

【讨论】:

以上是关于如何解决 Mongoose Connect UNKNOWN?的主要内容,如果未能解决你的问题,请参考以下文章

mongoose.connect 不是一个函数 - React Native

如何使用 Jest 在 NestJS 的提供者中模拟和监视“mongoose.connect”

javascript [mongoose connect]功能连接到mongoose #mongoose

使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起

使用 mongoose.createConnection() 与 mongoose.connect() 时查询挂起

如何在 connect-mongo 中使用会话?