在KNEX / BookshelfJS中定义'pool'的语法

时间:2017-11-21 22:53:08

标签: node.js postgresql knex.js bookshelf.js heroku-postgres

首先,我对这里的所有内容都很陌生......而且是StackOverflow的新手,所以提前为新手道歉,我已经为我的捶打做好了准备......大声笑。

我们为Postgres使用Heroku.addon并全局使用/ reference环境变量来访问正确的数据库。

我们在应用程序的根目录中有一个config.js文件,如:

  db: process.env.DB_URL || {
    client: 'pg',
    connection: {
      database: 'db_name',
      user: 'user_name'
    }
  },

这里有人能够指导我如何将初始化“自定义池”信息的代码集成到此设置中,就像在上面找到的示例一样 [http://knexjs.org/#Installation-pooling][http://knexjs.org/#Installation-pooling]

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  },
  pool: { min: 0, max: 7 }
});

在Heroku上,process.env.DB_URL是一个复杂的URL,类似于:

postgres://(redacted)@ec5-87-1-47-54.compute-1.amazonaws.com:5432/d8n2e9ebd0q9it

所以,我希望有一个干净的方法也可以在这里或在另一个文件/位置传递'自定义池'信息。

通过Bookshelf / Knex在我们的应用程序的后端引用数据库。对书架的引用类似于:

var knex = require('knex')(config.db);
var bookshelf = require('bookshelf')(knex);

1 个答案:

答案 0 :(得分:1)

您可以通过从env变量中读取连接详细信息来完成此操作,如下所示:

db: {
    client: 'pg',
    connection: process.env.DB_URL || {
      database: 'db_name',
      user: 'user_name'
    },
    pool: { min:5, max:20 }
  },