从MEAN堆栈应用连接到在AWS上运行的MongoDB

时间:2018-06-29 00:03:48

标签: angular mongodb amazon-web-services express mean-stack

我正在构建MEAN堆栈应用程序。我让mongodb在AWS上实时运行,并使用Robo 3T很好地连接到它。

所以我试图在我正在构建的快速角度应用程序中对连接进行编码。但是,无论我如何键入连接,我都只会收到连接超时错误。所以我需要帮助现在在Robo 3t中,我连接到它的方式只是使用localhost,然后是我的ssh密钥信息,然后它连接到数据库。

这是我这部分的server.js代码: // server.js

const express = require('express'),
    path = require('path'),
    bodyParser = require('body-parser'),
    cors = require('cors'),
    mongoose = require('mongoose'),
    config = require('../config/DB');

    mongoose.Promise = global.Promise;
    mongoose.connect(config.DB).then(
      () => {console.log('Database is connected') },
      err => { console.log('Can not connect to the database'+ err)}
    );  

因此,如您所见,我已将连接字符串的变量代码存储在具有DB类型的DB.js文件中。

// DB.js

module.exports = {
  DB: 'mongodb://serveripaddres:27017/databasename'
};

正如您在上面看到的,我已经删除了数据库的IP地址以及我通常知道的数据库名称,您也可以在此字符串中包括管理员用户名密码。但是,我这样做的尝试也失败了。谁能告诉我我在做什么错了。

哦,应用程序先运行在单独的服务器上,然后运行在数据库上。我意识到是的,将这些项目都设置在同一服务器上可能会更容易,但这不是我想要的结构。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果安全端口允许来自其他实例的流量,则配置出现问题。

执行以下操作

编辑您的MongoDB配置文件。在Ubuntu上:

sudo vim /etc/mongod.conf

查找网络行,并注释掉其下的bindIp行,当前该行将MongoDB连接限制为本地主机:

确保在/etc/mongodb.conf文件中具有以下行,

bind_ip = 0.0.0.0

现在重新启动mongodb

sudo service mongod restart

答案 1 :(得分:0)

出于安全原因(为什么会被拒绝)在您的aws中添加计算机的IP地址。并检查凭据。