Node.js 节点postgres获取错误连接错误

Node.js 节点postgres获取错误连接错误,node.js,postgresql,Node.js,Postgresql,我想将我的应用程序nodejs连接到PostgreSQL。 我在本地主机(ubuntu)中的应用程序和我在云计算虚拟机中的postgresql,以及操作系统OpenSuse。 这是我的代码: var express = require('express'); var app = express(); var http = require('http'); var pg = require('pg'); var conString = "postgres://postgres:mypassw

我想将我的应用程序nodejs连接到PostgreSQL。 我在本地主机(ubuntu)中的应用程序和我在云计算虚拟机中的postgresql,以及操作系统OpenSuse。 这是我的代码:

var express = require('express');
var app = express();


var http = require('http');
var pg = require('pg');

var conString = "postgres://postgres:mypassword@myurl.com:5432/postgres";


app.get('/', function (req, res) {
    res.send('HOLAAAA');
});

// respond with "SERVER" on the homepage
app.get('/server', function (req, res) {

    var client = new pg.Client(conString);
    client.connect(function (err) {
        if (err) {
            return console.error('could not connect to postgres', err);
        }
        console.log('CONNECT PASSED');
        client.query('SELECT * FROM visit', function (err, result) {
            if (err) {
                return console.error('error running query', err);
            }
            console.log('QUERY PASSED');
            console.log(result.rows[0].theTime);
            //output: Tue Jan 15 2013 19:12:47 GMT-600 (CST)
            client.end();
        });
    });

});


var server = app.listen(3000, function () {

    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port);

});
但我犯了这样一个错误:

could not connect to postgres { [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }
请帮我解决这个问题。
谢谢

首先从本地端尝试一个简单的psql命令

psql -d DBNAME -h YOUR_IP -U USERNAME
这可能不适合你。这可能是因为两个原因,VM的ip不由本地站点解析。(或者)是公共云中的虚拟机,比如亚马逊(或者)你的桌面。如果在公共组中,则VM上的端口5432不对公共世界开放。您需要编写一个安全组来执行此操作


如果您确定这不是上述两个问题中的任何一个,那么最好访问postgres
/etc/postgresql/9.3/main/pg_hba.conf
,查看是否启用了远程连接。NodeJs应用程序,您必须在最后进行测试。

@Madhavan Kumar非常感谢您的帮助

解决这一问题的步骤如下:

在远程服务器上:-

1-
find \-name“postgresql.conf”
查找配置文件的位置

2-
sudo nano/path/to/config/postgresql.conf
编辑配置文件

3-将此
#listen_addresses='localhost'
更改为此
listen_addresses='*'
,然后保存并退出

4-
find \-name“pg_hba.conf”
查找hba配置文件

5-
sudo nano/path/to/config/pg_hba.conf
编辑hba配置文件

6-添加

托管所有0.0.0.0/0 md5
所有主机::/0 md5

在文件末尾,然后保存并退出

7-运行
/etc/init.d/postgrestart
重新启动postgrestart

在代码中,按如下方式连接:-

let sequelize = new Sequelize(
  config.db.name,
  config.db.username,
  config.db.password,
  {
    host: config.ip,
    port: config.port,
    dialect : 'postgres'
  }
)

显然,你有一个连接问题。您应该首先尝试通过连接,看看是否可以,一旦可以,然后尝试您的节点应用程序。