我刚学习MongoDB和Node.js.我正在从一个视频中进行这个非常简单的练习,我尝试将我的node.js应用程序连接到我的MongoDB,我收到了这个错误:
{[MongoError:connect ECONNREFUSED] name:'MongoError',message:'connect ECONNREFUSED'}
在此之前,我已经在mongo上配置了一个数据库,并测试了在终端上运行一些命令:
$mongod (everything ok)
$mongo (everything ok)
..然后我创建了一个名为'products'的数据库,并添加了一些产品。当我点击:
db.products.find()
它返回:
{
"_id": ObjectId("55b2b27d7f9f84490b8a9170"),
"name": "beer",
"description": "belgian craft beer",
"price": 20
}
{
"_id": ObjectId("55b2b2c27f9f84490b8a9171"),
"name": "whisky",
"description": "scotch blended 18 years old",
"price": 150
}
{
"_id": ObjectId("55b2b3e47f9f84490b8a9172"),
"name": "cachaça",
"description": "typical brazilian cachaça",
"price": 10
}
{
"_id": ObjectId("55b2b4087f9f84490b8a9173"),
"name": "water",
"description": "water from the swiss alps",
"price": 5
}
{
"_id": ObjectId("55b2b2617f9f84490b8a916f"),
"name": "wine",
"description": "red porto wine",
"price": 80,
"tags": [
"porto",
"sweet",
"wine"
]
}
我的app.js:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/products');
var db = mongoose.connection;
db.on('error', function(err){
console.log('Erro de conexao.', err)
});
db.on('open', function () {
console.log('Conexão estabelecida.')
});
db.on('disconnected', function(err){
console.log('Desconectado')
});
我的package.json:
{
"name": "aula-mongoose",
"version": "0.0.1",
"description": "aula sobre mongoose",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [
"node.js",
"mongodb"
],
"author": "Guga",
"license": "WTFPL",
"dependencies": {
"mongoose": "^4.1.0"
}
}
我已经阅读了很多关于此的帖子,甚至是这里的帖子。但我不知道这里有什么问题。
修改
无意中我尝试连接到$ mongod,当它已经运行时,我被提示错误:
错误:48已经用于套接字的地址:0.0.0.0:27017
所以我将app.js中的这一行更改为:
mongoose.connect('mongodb://0.0.0.0:27017/products');
它有效。但我不明白为什么。任何人吗?
答案 0 :(得分:2)
对于其他人来说,有一个类似的问题。确保您已阅读mongodb的安装说明,尤其是确保计算机中存在文件夹/ data / db的部分。如果它没有创建它!
如果您仍然遇到问题,请尝试运行:
sudo mongod &
以确保mongo具有访问该文件夹的正确权限!
答案 1 :(得分:1)
找到答案的好工作。
正如您所发现的那样,问题是从localhost的原始声明中删除了端口信息。
在本地机顶盒上托管开发服务器时,localhost将需要端口分配。