代码在创建查询对象时崩溃。
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)
答案 0 :(得分:2)
你忘了,几乎所有对数据库的调用都是异步的。
在您的代码中,您使用
关闭了连接client.end();
无需等待,所有查询和相应的回复都已处理完毕。
答案 1 :(得分:2)
我同意Sirko的意见,将client.end()
置于query.on()
内,条件是满足从数据库中提取所有行的条件。
此外,删除您正在处理错误的块中的return语句。通常,大多数数据库客户端在遇到错误时会多次尝试连接数据库。如果您在第一次遇到错误时返回,您的客户甚至不会第二次尝试。