我是heroku和node的新手。当我尝试连接到heroku数据库时,出现以下错误。
错误:连接ECONNREFUSED 127.0.0.1:5432
我正在使用连接池:
var pg = require('pg');
var heroconfig =process.env.DATABASE_URL || "postgres://jykyslkwkdsvhz:3ba43ff7db0c8dv9a914bac02f55ce944d8ccec31b67f858df3a858faa386c8e@ec2-54-243-214-198.compute-1.amazonaws.com:5432/dfiijlh3fbe3g9";
//var pool1 = new Pool(heroconfig);
var pool1 = new Pool(heroconfig);
app.get('/db', function(req, res){
pool1.query('SELECT * FROM test_table;',function(err, result){
if(err){
res.status(500).send(err.toString());
} else{
res.send(JSON.stringify(result.rows));
}
});
});
我试图从其他用户那里查看类似的问题,但找不到涉及合并的解决方案。
请帮忙。
答案 0 :(得分:0)
我想出了部分,
将配置数据存储为如下对象使其可以正常工作
var heroconfig = {
user: 'username',
database: 'database name',
password: 'some pass word',
host: 'host name',
port: 5432,
max: 10,
idleTimeoutMillis: 30000,
};
然而,在使用我原始问题中提到的代码行时,数据库url存储在变量中,它不起作用:
var heroconfig =process.env.DATABASE_URL || "postgres://jykyslkwkdsvhz:3ba43ff7db0c8dv9a914bac02f55ce944d8ccec31b67f858df3a858faa386c8e@ec2-54-243-214-198.compute-1.amazonaws.com:5432/dfiijlh3fbe3g9";
我打算将我的凭据存储在另一个文件中,并在我的服务器文件中需要它,这似乎是一种更好的方法。
答案 1 :(得分:0)
我知道这已经很晚了,但根据文档为了使用连接字符串,你必须这样做:
const { Pool, Client } = require('pg')
const connectionString = 'postgresql://dbuser:secretpassword@database.server.com:3211/mydb'
const pool = new Pool({
connectionString: connectionString,
})
见这里:https://node-postgres.com/features/connecting#connection-uri