如何使用 NodeJS 从 EC2 连接和查询 PostgreSQL RDS?

Posted

技术标签:

【中文标题】如何使用 NodeJS 从 EC2 连接和查询 PostgreSQL RDS?【英文标题】:How to connect and query PostgreSQL RDS from EC2 using NodeJS? 【发布时间】:2017-12-19 16:37:43 【问题描述】:

如何使用NodeJS创建从EC2到远程RDS(PostgreSQL)的连接并查询?

我有此代码,但目前无法使用(包括密码的连接字符串应该是什么样子?):

var pg = require('pg');
var conString = "postgres://username:@db.us-east-2.rds.amazonaws.com:5432/testdb";

var client = new pg.Client(conString);
client.connect();

var query = client.query("SELECT * FROM t1");
//fired after last row is emitted

query.on('row', function(row) 
    console.log(row);
);

query.on('end', function() 
    client.end();
);

【问题讨论】:

如果我没记错的话,你需要密码:postgres://username:password@db.us-east-2.rds.amazonaws.com:5432/testdb 这工作..谢谢!我们是否需要在最后以某种方式关闭连接? (或采用上述方法自动) 我建议不要使用裸 url - 请参阅此处的池示例和配置:github.com/brianc/node-postgres#pooling-example。注意设置idleTimeoutMillis会自动关闭一个超时的客户端。 是的,您需要明确关闭连接,否则您的 Postgres 将很快达到最大连接数 -- 请使用 select * from pg_stat_activity; 检查当前会话。 太好了,感谢您的帮助.. @randnum - 我开始检查'pooling-example'。您知道这行代码是否可以简单地替换为常规 SQL 查询而不是参数化? "client.query('SELECT $1::text as name', ['brianc'], function (err, result) " 【参考方案1】:
const connUrl = postgres://username:passoword@endpoint:port/database 

【讨论】:

以上是关于如何使用 NodeJS 从 EC2 连接和查询 PostgreSQL RDS?的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 连接在 Amazon EC2 上托管的 nodejs 应用程序中过早终止

Amazon RDS 和 VPC 终端节点连接

AWS Elastic Beanstalk - 如何在同一个 ec2 实例中运行 php 和 nodejs

AWS RDS / EC2:TimeoutError:Knex:获取连接超时。游泳池可能已满

从 ECS 集群中的 docker nodejs EC2 容器连接到 Redis Elasticache 集群

AWS ElasticBeanstalk NodeJS-502错误:从上游读取响应头时,recv()失败(104:对等连接重置)