我遇到了用Node.js连接PostgreSQL数据库的问题。 我运行像这样的Docker化PostgreSQL服务器(https://docs.docker.com/engine/examples/postgresql_service/),可以使用pgadmin连接,但无法使用node连接。 我在该端口上没有看到任何进程。 我看到的错误是:
MacBook-Pro-Maxim:nodejs lucio$ docker logs 5cc44d01bf4ada729e5f1c71157e4eba5cb6fa9fd40122f384b423fbd1ae13a7
2019-12-28T12:38:53: PM2 log: Launching in no daemon mode
2019-12-28T12:38:53: PM2 log: App [index:0] starting in -fork mode-
2019-12-28T12:38:53: PM2 log: App [index:0] online
{ Error: connect ECONNREFUSED 127.0.0.1:32775
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14)
errno: 'ECONNREFUSED',
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 32775 }
database.js
这是我的DataBase类的简单示例。只需构造连接参数和简单查询请求方法。
const {
Pool,
Client
} = require('pg')
const sqlQueryGenerator = require('sql-query-generator')
const sqlGenerator = require('sql')
sqlGenerator.setDialect('postgres')
sqlQueryGenerator.use('postgres')
class DataBase {
constructor(params) {
this.base = new Pool(params)
}
query(text) {
return new Promise((resolve, reject) => {
this.base.query(text, (err, res) => {
if (err) reject(err)
resolve(res)
})
})
}
}
module.exports = DataBase
在我的api.js文件中使用这个模块
require('dotenv').config({ path: './.env' })
const DataBase = require('./database')
const db = new DataBase({
user : process.env.USER,
host : process.env.HOST,
database : process.env.TABLE,
password : process.env.PASSWORD,
port : process.env.PORT,
})
这是我的 .env 文件
HOST = localhost
USER = docker
TABLE = docker
PASSWORD = docker
PORT = 32775
在运行 Node.js API 容器之前,我要检查我的 PostgreSQL Docker 容器的实际端口。如何解决这个问题?感谢您的反馈。
127.0.0.1
。 - t.niese