node.js - 通过 Node 在 heroku postgresql db 上连接被拒绝

标签 node.js postgresql heroku

我在 heroku 上通过 node 运行一个 postgresql 数据库。我将我的服务器设置为发布到“/submit”,它调用数据库 Controller 将数据插入数据库。一切都在本地成功运行,但是当我将它部署到 heroku 和 POST 时,我的 heroku 日志中出现以下错误。

2013-01-21T20:23:43+00:00 heroku[router]: at=info method=POST path=/submit host=[MYDOMAIN].herokuapp.com fwd=[IP] dyno=web.1 queue=0 wait=5ms connect=17ms service=35ms status=200 bytes=2
2013-01-21T20:23:46+00:00 app[web.1]:               ^
2013-01-21T20:23:46+00:00 app[web.1]: node.js:201
2013-01-21T20:23:46+00:00 app[web.1]:         throw e; // process.nextTick error, or 'error' event on first tick
2013-01-21T20:23:46+00:00 app[web.1]: 
2013-01-21T20:23:46+00:00 app[web.1]:     at Object.afterConnect [as oncomplete] (net.js:637:18)
2013-01-21T20:23:46+00:00 app[web.1]: Error: connect ECONNREFUSED
2013-01-21T20:23:46+00:00 app[web.1]:     at errnoException (net.js:646:11)
2013-01-21T20:23:48+00:00 heroku[web.1]: Process exited with status 1

和应用程序中的 503。

这是相关的 Controller 代码(在 coffeescript 中)。

LOCAL_DB = "postgres://localhost:#{DBNAME}"

connect = ->
    db = process.env.DATABASE_URL or LOCAL_DB
    client = new pg.Client
    client.connect()
    client

insert = (options) ->
    client = connect()
    query = client.query "INSERT INTO #{TABLE} VALUES($1, $2, $3, $4);",
        [options.uid, options.ls_pref, options.hp_pref, options.date]
    query.on "error", onError
    query.on "end", -> client.end()

我确实将我的数据库提升到 DATABASE_URL:

$ heroku config | grep DATABASE_URL
> DATABASE_URL: postgres://[URL]

为什么我的连接被拒绝?

最佳答案

事实证明我在创建客户端时没有传递数据库字符串。

# Yes
db = process.env.DATABASE_URL or LOCAL_DB
client = new pg.Client db
client.connect()

# No
db = process.env.DATABASE_URL or LOCAL_DB
client = new pg.Client
client.connect db

尽管存在这种相当明显的疏忽,但本地数据库仍在运行。您已收到警告!

关于node.js - 通过 Node 在 heroku postgresql db 上连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446800/

相关文章:

javascript - Promise Chain似乎没有继续

javascript - 验证检查后执行验证中间件

javascript - 同步逐行读取文件流

postgresql - Postgres 插入或更新触发器 WHEN 条件(旧)

sql - 如何使用 LINQ 生成 SQL?

postgresql - Ruby On Rails 如何将本地 Postgres 数据库复制到 Heroku

django - Heroku:执行查询但没有 postgresql 日志

Node.js、AWS Cognito - 前端登录,后端用户验证

mysql - ActiveRecord::Base SQL 结果对象类型在 MySQL 和 PostgreSQL 中不同

node.js - ERR_CONNECTION_RESET 将大文件上传到 Amazon S3 时出错