使用node-orm(在osx 10.6.8下)将node.js应用程序连接到PostgreSQL的问题

我想在osx(10.6.8)下运行一个小的nodejs应用程序,并连接到我的localhost Postgres数据库。 我正在使用node-orm(https://github.com/dresende/node-orm2)以及Postgres绑定(https://github.com/brianc/node-postgres)。

出于某种原因,当我使用orm.connect并将它作为string连接url时,它将失败:

 Error: getaddrinfo ENOENT at errnoException (dns.js:31:11) at Object.onanswer [as oncomplete] (dns.js:123:16) 

如果我用127.0.0.1更改本地主机。 它也死于超时exception。

使用vanilla postgress绑定连接到数据库,使用相同的连接string是成功的,我甚至设法得到一些testing查询运行,得到的结果等。

我尝试使用vanilla postgress API手动设置数据库客户端,并使用orm.use将其传递给orm。 这pipe理成功连接到数据库,但每次我尝试执行一个查询,没有任何反应。 它不会产生一个错误,但sinply卡住了QueryQueue,并没有调用成功的callback。 我检查了数据库日志,似乎也没有检测到查询。

我该怎么办? 我有一点困惑

我在飞机上遇到了这个问题。 当我没有连接到networking时,我只收到Error: getaddrinfo ENOENT ,即使我在本地运行数据库服务器。 这是我做了什么来解决它:

而不是使用localhost ,请使用127.0.0.1

所以你的连接string将从

  postgresql://user:pass@localhost:5432/db_name 

 postgresql://user:pass@127.0.0.1:5432/db_name 

不能从问题中弄出真正的问题。看起来像连接string是错误的。 但是,这是一个代码块,它与https://github.com/brianc/node-postgres一起工作

`

 var application_root = __dirname, pg = require('pg'); // database var conString = "postgres://username:password@172.28.6.250:5432/db_name"; function processReqResSql(req, res, sql) { pg.connect(conString, function (err, client) { if (err) { res.writeHead(404, { 'Content-Type': 'application/json' }); res.write('{couldnt connect to db}'); } else { var query = client.query(sql); / var dbResponse =""; query.on('row', function(row) { console.log(row); dbResponse = dbResponse+JSON.stringify(row); }); query.on('end', function() { client.end(); res.writeHead(200, {"Content-Type": "application/json"}); res.write("{ results:{"+dbResponse+"}"); res.end(); }); } 

检查你的postgre服务器是否已经启动。 你可以通过下面的命令启动它:

 pg_ctl -D <db-name> -l logfile start