使用连接字符串时如何设置 knex 连接 ssl 选项

how to set knex connection ssl options when using a connection string

当我使用连接字符串初始化 knex 时,如何将连接的 ssl 属性 设置为 true?同样如何将调试设置为真?我通常会传入一个连接对象,但在这种情况下,我必须使用来自环境变量的连接字符串。

var database = {
    client: 'pg',
    connection: connstr //normally I would pass in the object below
    //connection: {
    //    "host": config.get('database_host'),
    //    "user": config.get('database_user'),
    //    "password": config.get('database_password'),
    //    "database": config.get('database_name'),
    //    "debug": config.get('database_debug'),
    //    "ssl":config.get('database_ssl')
    //}
};

var knex = require('knex')(database);
knex.connection.ssl = true;  // this doesn't seem to do anything

只需将 ?ssl=true 添加到连接字符串的末尾(在数据库名称的末尾)。对于调试,要么在设置 ssl 之后附加 ?debug=true,要么附加 &debug=true 我实际上不确定,抱歉,所以两者都试一下。

对于 pg >= 8.x,您需要如下内容:

connection: {
  connectionString: dbConnection,
  ssl: { rejectUnauthorized: false }
}

这个答案让我来到这里:

你可以阅读更多here