我已经在heroku上部署了我的应用程序,并且能够通过复制和粘贴heroku提供的代码从终端中的pg:psql建立数据库连接。现在我想直接将我的节点应用程序连接到heroku上的postgres但没有成功。我按照关于如何在这里将nodejs连接到postgres的关于heroku的说明.. https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js但我似乎无法让它工作。我只是安装了pg模块并将heroku提供的代码块粘贴到我的server.js文件中的get请求中。
app.use(express.static('public'));
app.use(bodyParser.json());
app.get('/food', function(req, res) {
pg.defaults.ssl = true;
pg.connect(process.env.DATABASE_URL, function(err, client) {
if (err) throw err;
console.log('Connected to postgres! Getting schemas...');
client.query('SELECT table_schema,table_name FROM information_schema.tables;').on('row', function(row) {
console.log(JSON.stringify(row));
});
});
});
http.listen(process.env.PORT || 3000, function(){
console.log('listening to port 3000!');
});
我从heroku日志得到的错误是..
/appserver.js:53
if (err) throw err;
Error: connect ECONNREFUSED 127.0.0.0.1:5432
在搜索该错误消息后,我得到一些人建议修复或更改DATABASE_URL。我如何以及在何处更改它?我输了。我真的很感激,如果我能得到一些帮助来解决它。
答案 0 :(得分:0)
pg连接正在您的环境中使用数据库URL:
pg.connect(process.env.DATABASE_URL, function(err, client) {}
由于未设置DATABASE_URL env变量,因此默认为localhost 127.0.0.0.1:5432
。您可以在bashrc or bash_profile中设置DATABASE_URL。如果您有多个应用,可以更具体地将其命名为PROJECTNAME_DATABASE_URL。在Heroku上,您可以这样设置:
$ heroku config:set DATABASE_URL=postgres://user:password@host:port/database