我现在正在学习如何在node.js中使用node-postgres包并表达,以便从Node.js中连接到postgres服务器。这是我写的代码,但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
文件中。
但是,当我运行我的应用并访问相应的网址时,它确实没有返回任何内容。虽然enter connect
和will execute a query
显示在我的终端中,但看起来执行在client.query
停止,而不是在success
显示。
那为什么它不能按预期工作?我既没有任何经验也没有postgres的知识 - 我通常使用mysql并且刚安装了postgres,因为heroku不允许我使用mysql(实际上我可以通过第三方插件使用它)。当我使用mysql时,我已经能够成功返回结果,因此原因可能与我使用postgres服务器设置有关。
请注意我的postgres服务器正在运行,我确认我的用户名,密码和dbname是正确的(实际上我确实重置了密码)。
我使用节点版本v0.10.21和node-postgres @ 2.11.1。
答案 0 :(得分:3)
你混淆了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
});
});