我正在尝试在Node.js应用程序中使用postgres。我已经创建了一个数据库实例,并且正在使用pg连接到它。当我尝试连接到它时,出现错误:
{ Error: connect ETIMEDOUT xxx.xx.xx.xxx:5432
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1097:14)
errno: 'ETIMEDOUT',
code: 'ETIMEDOUT',
syscall: 'connect',
address: 'xxx.xx.xx.xxx',
port: 5432 }
我已经确保数据库是公共的。我在SO和google和duckduckgo上搜索了此错误,但找不到类似的错误。
我已经两次和三次检查主机,用户,数据库,密码和端口是否正确。我正在使用pg文档here和aws文档here来建立我的连接。
我希望任何人都可以提供任何见解。
const express = require('express');
const logger = require('morgan');
const helmet = require('helmet');
const { Pool, Client } = require('pg');
const server = express();
server.use(logger('dev'));
server.use(helmet());
const keys = require('./keys/keys');
const pgConfig = {
host: keys.pgHost,
user: keys.pgUserName,
database: keys.pgDBName,
password: keys.pgUserPW,
port: keys.pgDBPort
};
const pool = new Pool({ ...pgConfig });
server.get('/', async (req, res) => {
await pool.connect((err, client, release) => {
if (err) {
console.log(err);
}
})
return res.status(200).send('<h1>Welcome to the server</h1>');
});
module.exports = server;
编辑:我能够使用与我的项目中保存的主机,数据库用户名和密码相同的主机,使用pgadmin连接到数据库
答案 0 :(得分:0)
我弄清楚出了什么问题。我实际上连接成功。我没有返回pool.connect()
,这导致了超时。我将其更改为以下内容,现在它可以解决“无错误”和无连接超时错误。
await pool.connect((err, client, release) => {
if (err) {
console.log(err);
} else {
return console.log("no error");
}
})