使用sequelize ORM在node.js上连接到Amazon RDS Postgres数据库的问题

时间:2016-02-23 06:30:56

标签: javascript node.js postgresql amazon-web-services sequelize.js

我目前正致力于将Heroku中设置的环境迁移到Amazon Web Services堆栈(RDS PostgreSQL,Elastic Beanstalk)。

尝试通过sequelize.js ORM连接到PostgreSQL时遇到了一些问题。错误信息如下:

  

未处理拒绝SequelizeHostNotFoundError:getaddrinfo ENOTFOUND   [主机]。

我可以通过pgAdmin连接到数据库,所以我知道该服务正在运行,并且以下配置适用于Heroku:

    sequelize = new Sequelize(process.env.DATABASE_URI, {
        dialect: 'postgres',
        protocol: 'postgres',
        logging: true,
        timestamps: false
    })

DATABASE_URI的格式如下:

postgres://[db_username]:[db_password]@[hostname]:[port]/[db_name]

非常感谢任何帮助。提前谢谢!

2 个答案:

答案 0 :(得分:4)

我能在这里解决我的问题。基本上,我通过在环境中正确设置以下内容来解决它:

  1. 正确格式化URI - (按照上面的语法,我能够让它工作)
  2. 为Amazon RDS&amp; amp;提供安全保护。 Elastic Beanstalk - 我必须为运行Elastic Beanstalk的安全组/实例角色启用对Amazon RDS实例的入站访问。 (因为我能够通过我的本地计算机点击RDS这个事实。我默认情况下,似乎RDS设置了你用来使用它的IP ......这是有道理的。)< / LI>

答案 1 :(得分:0)

我遇到了一个非常类似的问题,结果发现我的密码中有一个问号 - 导致密码的一半和连接URL的其余部分被忽略(显然是URL搜索部分的一部分)。

类似的东西:

new Sequelize("postgres://fred:xj78?23@example.com/db");

我们最终得到的用户名是:fred,密码:xj78,其他所有内容都是空白的。