连接Postgres Heroku与Knex无法正常工作

时间:2014-09-29 22:03:54

标签: javascript node.js postgresql heroku knex.js

我们在设置运行查询的Knex时设置Heroku / Postgres数据库时遇到了困难。我们已经设置了我们的heroku / postgres数据库并创建了我们的表,但我们很难通过Knex连接它。更糟糕的是,几乎没有关于将Heroku / Postgres与Knex或任何ORM连接起来的文档,所以试图弄清楚这些东西真的很痛苦。

这些是我尝试过的连接模式。

var knex = require('knex')({
  client: 'pg',
  connection: {
    user: username,
    password: password,
    host: host,
    port: port,
    database: database,
    ssl: true
  }
  }
});

并且...注意ssl true是切换并一起删除所有无济于事。

  var knex = require('knex')({
    client: 'pg',
    connection: HEROKU_POSTGRESQL_COLOR_URL,
    ssl: true
    }
  });

我们也尝试过这种模式:

var pg = require('knex')({
  client: 'pg',
  connection: HEROKU_POSTGRESQL_COLOR_URL
 });

我们还没有下载localdb的副本,所以我们运行的每个测试基本上都是一个git提交。我们基本上测试对我们的root(index.html)页面的GET请求的插入查询。因此,在对主页面的任何获取请求中,它应该在我们的waterrates表中插入一些内容。如果我将它从插入切换到选择,它将返回一个对象,但您实际上无法看到对象中的任何数据。

我们尝试使用的插件是:

knex.select('*').from('waterrates').then(function(rows){
  return rows;
});

knex('waterrates').insert({name: 'pleeeaseee work'}, {rate: 100}).then(function(rows){
   console.log(rows);
})

knex.select().

我们实际上不确定错误的位置,因为尝试连接不会产生任何错误。这可能是愚蠢的,但我们不知道在哪里或如何解决这个问题。任何帮助将不胜感激!

谢谢, 乙

2 个答案:

答案 0 :(得分:5)

我安装了旧版本的PG导致了这个问题。我们更改了package.json文件以使用最新的PG。 Heroku更新了它,它工作了!

作为旁注,如果将来有人看到这个,heroku需要SSL连接。在你工作的时候记住这一点。我上面提供的连接字符串应该适合所有人。

答案 1 :(得分:1)

针对正在处理此问题的任何人。

如果您不使用付费测功机,请将“ SSL”设置为false。

Heroku仅将“ SSL”分配给使用付费测功的用户。

R code