Node.js由于某种原因无法连接到postgresql

时间:2015-07-14 10:03:00

标签: node.js postgresql

代码在创建查询对象时崩溃。

var conString = "postgres://mydbusr:thepassword@localhost/mydb";    
var client = new pg.Client(conString);
client.connect(function(err) {
    if (err) {
        return console.error('could not connect to postgres', err);
    }
    var query = client.query('SELECT id FROM people');  //THE PROBLEM IS HERE
    query.on('row', function(row) {
        //Do something
    });
    client.end();
});

这是我真正不理解的错误:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: Connection terminated
    at null.<anonymous> (/liveupdates/node_modules/pg/lib/client.js:184:29)
    at g (events.js:180:16)
    at EventEmitter.emit (events.js:92:17)
    at Socket.<anonymous> (/liveupdates/node_modules/pg/lib/connection.js:66:10)
    at Socket.EventEmitter.emit (events.js:95:17)
    at TCP.close (net.js:466:12)

2 个答案:

答案 0 :(得分:2)

你忘了,几乎所有对数据库的调用都是异步的。

在您的代码中,您使用

关闭了连接
client.end();

无需等待,所有查询和相应的回复都已处理完毕。

答案 1 :(得分:2)

我同意Sirko的意见,将client.end()置于query.on()内,条件是满足从数据库中提取所有行的条件。

此外,删除您正在处理错误的块中的return语句。通常,大多数数据库客户端在遇到错误时会多次尝试连接数据库。如果您在第一次遇到错误时返回,您的客户甚至不会第二次尝试。