首页 > 解决方案 > knexfile.js 的客户端属性是什么

问题描述

在PostgreSQL配置的knex 文档knexfile.js中,它们有一个名为 的属性client,看起来是这样的:

...
client: 'pg'
...

然而,通过其他一些使用 PostgreSQL 的项目,我注意到它们在那里有不同的价值,看起来是这样的:

...
client: 'postgresql'
...

此字符串是否对应于项目正在使用的某种命令行工具的名称,或者我误解了什么?

标签: postgresqlknex.js

解决方案


Postgresql 基于“架构基础”中描述的服务器-客户端模型

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

客户端也可以是 pg-admin 之类的 GUI,或者是 ' pg ' 之类的节点包 - 这是一个列表

client 参数是必需的,它决定了哪个客户端适配器将与库一起使用。

您还应该阅读“服务器设置和操作”的文档

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

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

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

在 Debian 拉伸 iE 上:

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

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

rm ~/.psql_history

现在您可以在系统和 postgres 上添加新用户(iE 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 }
 };

这基本上告诉我们以下信息:

在 dev - 使用客户端xyz以用户foobar连接到 postgresqls 数据库my_app(在这种情况下没有 pwd)

在 prod - 检索 globalenv db-server 的 url 设置为并通过客户端abc连接

下面是一个 node 的 pg-client 包如何打开连接池的例子:

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

如果您可以澄清或详细说明您的设置或您希望实现的更多目标,我可以为您提供一些更详细的信息 - 但我希望无论如何都能有所帮助..


推荐阅读