knexfile.js的客户端属性是什么

时间:2018-08-02 15:11:41

标签: postgresql knex.js

knexfile.js的PostgreSQL的 knex documentation配置中,它们具有一个名为client的属性,其外观如下:

...
client: 'pg'
...

但是,在浏览一些其他使用PostgreSQL的项目时,我注意到它们在那里具有不同的值,看起来像这样:

...
client: 'postgresql'
...

此字符串是否与项目中使用的某种命令行工具的名称相对应,或者我误会了某些内容?

1 个答案:

答案 0 :(得分:0)

Postgresql基于服务器客户端模型,如'Architectural Fundamentals'

中所述

psql docs中提到的postgres的标准cli客户端。

客户端也可以是GUI(例如pg-admin)或节点包(例如'pg'-这里是list)。

client参数是必需的,它确定将与库一起使用的 client适配器

您还应该阅读“ Server Setup and Operation”的文档

要初始化库,您可以执行以下操作(在本例中为localhost):

var knex = require('knex')({
  client: 'mysql',
  connection: {
    host : '127.0.0.1',
    user : 'your_database_user',
    password : 'your_database_password',
    database : 'myapp_test'
  }
})

客户端守护程序“ postgres”的标准用户-当然可以使用,但是强烈建议按照文档中的说明创建新用户和/或将密码应用于标准用户“ postgres”。

在Debian上,即:

# su - postgres
$ psql -d template1 -c "ALTER USER postgres WITH PASSWORD 'SecretPasswordHere';"

请确保您删除了命令行历史记录,以便没有人可以读出您的密码:

rm ~/.psql_history

现在您可以在系统上和Postgres中添加新用户(即foobar)

# adduser foobar

# su - postgres
$ createuser --pwprompt --interactive foobar

让我们看一下以下设置:

module.exports = {
  development: {
    client: 'xyz',
    connection: { user: 'foobar', database: 'my_app' }
  },
 production: { client: 'abc', connection: process.env.DATABASE_URL }
 };

这基本上告诉我们以下内容:

在开发人员中-使用客户端 xyz 与用户 foobar (在这种情况下,不使用pwd)连接到PostgreSQL数据库 my_app

在生产中-检索数据库服务器的URL设置为globalenv并通过客户端 abc

连接

以下是节点的pg-client包如何打开连接池的示例:

const pool = new Pool({
    user: 'foobar',
    host: 'someUrl',
    database: 'someDataBaseName',
    password: 'somePWD',
    port: 5432,
})

如果您可以澄清或详细说明您的设置,或者希望获得更多的成就,我可以为您提供更多详细的信息-但我希望无论如何都可以帮助您。