无法将Node.js连接到Mongodb

时间:2018-01-20 20:00:51

标签: node.js mongodb

我是关于node.js和MongoDB的新手。

我在服务器A上安装了MongoDB.MongoDB正在运行,端口27017已打开。我能够连接到robo3T

我在另一台服务器上有一个Node.js应用程序B. Node.js正在运行。

当我访问网站时,一切都正确显示但是当我想登录时(因此需要访问MongoDB),网站就会出现错误:无法获取/502.shtml

以下是所有细节

Mongodb服务器  mongod.conf:

port: 27017
bindIp: 0.0.0.0 

Nodejs app.js:

    var promise = mongoose.connect('mongodb://XXXX:27017/preprod', {useMongoClient: true}, function(err) {
    if (err) return console.error(err);});
mongoose.Promise = require('bluebird');

XXXX =服务器A的地址IP(mongodb服务器)

当我运行app.js时出现此错误

name: 'MongoError',
  message: 'failed to connect to server [XXX:27017] on first connect [MongoError: connect ETIMEDOUT XXXX:27017]' }

我可以从我的linux机器,其他VPS服务器连接但不能连接到我的nodejs服务器!

也许我错过了什么?

3 个答案:

答案 0 :(得分:0)

在Linux机器上执行此操作,

iptables -A INPUT -s 0.0.0.0 -p tcp --destination-port 27017 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -d 0.0.0.0 -p tcp --source-port 27017 -m state --state ESTABLISHED -j ACCEPT

并尝试从远程服务器(服务器B)连接到服务器A的IP地址。

答案 1 :(得分:0)

解决:

实际上我的nodejs服务器上的端口27017已关闭。 现在它可以连接!

如果可以帮助别人

答案 2 :(得分:0)

a[

项目名称在哪里。

确保您已安装并导入猫鼬。而且,你有mongod在运行。

另外,我会在mongoose.connect(..)

之前删除'var promise ='