在knexfile.js
的PostgreSQL的 knex documentation配置中,它们具有一个名为client
的属性,其外观如下:
...
client: 'pg'
...
但是,在浏览一些其他使用PostgreSQL的项目时,我注意到它们在那里具有不同的值,看起来像这样:
...
client: 'postgresql'
...
此字符串是否与项目中使用的某种命令行工具的名称相对应,或者我误会了某些内容?
答案 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,
})
如果您可以澄清或详细说明您的设置,或者希望获得更多的成就,我可以为您提供更多详细的信息-但我希望无论如何都可以帮助您。