连接Postgres Heroku和Knex无法工作

6
我们正在尝试使用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
 });

我们还没有拉取本地数据库的副本,所以我们运行的每个测试基本上都是一个 git 提交。我们基本上是在测试对我们的根目录(index.html)页面的 GET 请求上执行插入查询。因此,在任何对主页的 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().

我们其实不确定错误出在哪里,因为尝试连接并没有出现任何错误。可能是一些简单的问题,但我们不知道在哪里/如何进行故障排除。非常感谢您提供任何帮助! 谢谢, B
2个回答

5

我安装的PG版本过旧,导致出现了问题。我们修改了package.json文件,使用了最新的PG版本。Heroku进行了更新,问题就得到了解决!

值得一提的是,如果有人在未来查看这篇文章,请注意,Heroku要求使用SSL连接。在你工作时请牢记这一点。我提供的连接字符串应该适用于大家。

B


2

对于任何遇到此问题的人。

如果您不使用付费的dynos,请将"SSL"设置为false。

Heroku仅向使用付费dynos的用户分配"SSL"。

const db = knex({
  client: 'pg',
  connection: {
    connectionString : process.env.DATABASE_URL,
    ssl: false
  }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接