如何解决 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() 时查询挂起