client.query在node.js中的node-postgres库中没有响应

我现在正在学习如何在node.js中使用node-postgres包,并且为了从Node.js连接到postgres服务器而进行expression。 下面是我写的代码,但是client.query在这里完全不起作用:

 var pg = require("pg"); exports.batting = function(req, res) { var conString = "postgres://myUserName:myPassword@localhost:5432/baseball"; var client = new pg.Client(conString); pg.connect(conString, function(err, result) { console.log("enter connect"); if (err) { console.log(err); } else { console.log("will execute a query"); client.query("select * from batting;", function(err, result) { if (err) { console.log(err); } console.log("success"); }); } }); } 

请注意,我将上面的代码写入了另一个文件,而不是在根app.js文件中。

但是,当我运行我的应用程序,并访问相应的url,它不会返回任何内容。 而当enter connectwill execute a query显示在我的terminal,看起来像执行停在client.query ,并不显示在client.query success

那么为什么它不能按预期工作? 我既没有任何经验也没有postgres的知识 – 我通常使用mysql和刚安装的postgres,因为heroku不允许我使用mysql(实际上我可以通过第三方插件使用它)。 而我已经能够成功地返回结果,当我使用MySQL,所以原因可能与我的设置与Postgres服务器。

请注意,我的postgres服务器正在运行,并确认我的用户名,密码和dbname是正确的(我确实重置了我的密码)。

我使用节点版本v0.10.21和node-postgres @ 2.11.1。

你正在搞混API调用。 您可能用于查询的client pg.connect函数返回:

 pg.connect(conString, function(err, client, done){ // handle err here client.query("select * from batting;", function(err, result) { // handle err here console.log("success"); done(); // don't forget this to have the client returned to the pool }); });