Kar*_*Haj 26 mongodb node.js express
我是nodeJS的新手,通过关注youtube上的预告片开始学习,一切顺利,直到我添加连接功能,如果是mongodb,
mongo.connect("mongodb://localhost:27017/mydb")
Run Code Online (Sandbox Code Playgroud)
当我在cmd(node start-app)上运行我的代码时,得到以下错误,
MongoNetworkError: failed to connect to server [localhost:27017] on first connect [MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017]
Run Code Online (Sandbox Code Playgroud)
有人能解释我错过了哪一步吗?我的代码:
var express = require("express");
var MongoClient = require('mongodb');
var url = "mongodb://localhost:27017/mydb";
var webService = require("./webService");
var server = express();
MongoClient.connect(url, function (err, db) {
if (err) throw err;
console.log("Database created!");
db.close();
});
server.use(express.urlencoded({ extended: true }));
server.set('views', __dirname);
server.get('/', function (request, response) {
response.sendFile(__dirname + '/MainPage.html');
});
server.get('/Sign', function (request, response) {
response.render(__dirname + '/Sign.ejs');
});
server.post("/signUp", webService.signUp);
server.post("/createUser", webService.createUser);
server.listen(5500);
Run Code Online (Sandbox Code Playgroud)
Vis*_*hnu 18
您必须MongoDB先在系统中安装数据库服务器并启动它.
使用以下链接进行安装 MongoDB
https://docs.mongodb.com/manual/installation/
您的 IP 地址可能已更改。
如果您最近重新启动了调制解调器,这会更改可能已在 Atlas 上列入白名单的 IP。
Soooo,您需要跳回 Atlas 并将您的新 IP 地址添加到安全>网络访问下的白名单。
小智 8
在尝试了每个解决方案之后,google提出了堆栈溢出问题,我发现了我的特殊问题。很久以前,我已经编辑了hosts文件,以允许我从virtualbox访问本地主机。
删除此条目为我解决了该问题,并通过上述解决方案中提供的链接正确安装了mongoDB,并包括正确的Promise处理代码:
mongoose.connect('mongodb://localhost/testdb').then(() => {
console.log("Connected to Database");
}).catch((err) => {
console.log("Not Connected to Database ERROR! ", err);
});
Run Code Online (Sandbox Code Playgroud)
小智 7
他们中的许多人没有添加此内容,尤其是在AWS EC2实例中,我遇到了相同的问题并尝试了不同的解决方案。解决方案:代码中我的数据库URL之一缺少此参数“ authSource”,因此添加了此功能。
mongodb://myUserName:MyPassword@ElasticIP:27017/databaseName?authSource=admin
Run Code Online (Sandbox Code Playgroud)
按照上面@CoryM 的回答背后的逻辑:
在尝试了谷歌提出的关于堆栈溢出的每个解决方案后,我发现了我的特殊问题。我很久以前编辑过我的主机文件,以允许我从我的虚拟机访问我的本地主机。
删除此条目为我解决了它...
2 个月前,我也为 Python 机器学习设置编辑了我的主机文件。因此,我没有因为我仍然需要它而将其删除,而是使用127.0.0.1了 代替localhost并且它起作用了:
mongoose.connect('mongodb://127.0.0.1/testdb')
Run Code Online (Sandbox Code Playgroud)
这发生在我身上,我发现这是因为互联网连接错误。如果我在我的地方使用公共 wifi,出于安全原因阻止了各种网站,Mongo 拒绝连接。但是如果我要使用自己的移动数据,我可以连接到数据库。