我应该如何在 ormconfig.json 中指定 DATABASE_URL?
How should I specify the DATABASE_URL in ormconfig.json?
我正在尝试将我的 Vesper 服务器部署到 Heroku,而 Vesper 需要一个 ormconfig.json 文件。
当我使用我的本地数据库时,这工作得很好,因为我可以填写所有将合并到连接字符串中的字段。但是,当我在 Heroku 中添加一个数据库时,我只得到了完整的 url 而我找不到把它放在哪里。
这是我现在的ormconfig.json。
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "password",
"database": "test",
"synchronize": true,
"entities": ["target/entity/**/*.js"],
"migrations": ["target/migrations/*.js"],
"cli": {
"migrationsDir": "src/migrations"
}
}
我希望我可以仅用 database_url 替换大多数字段,但我找不到任何说明我应该使用什么名称的文档。
您可以使用 url 解析器进行 heroku env var 解析,例如 pg-connection-string
https://www.npmjs.com/package/pg-connection-string
然后你使用TypeOrm给的createConnection
函数在服务端初始化TypeOrm
import * as PostgressConnectionStringParser from "pg-connection-string";
const databaseUrl: string = process.env.DATABASE_URL;
const connectionOptions = PostgressConnectionStringParser.parse(databaseUrl);
const typeOrmOptions: PostgresConnectionOptions = {
type: "postgres",
name: connectionOptions.name,
host: connectionOptions.host,
port: connectionOptions.port,
username: connectionOptions.username,
password: connectionOptions.password,
database: connectionOptions.database,
synchronize: true,
entities: ["target/entity/**/*.js"],
extra: {
ssl: true
}
};
const connection = createConnection(typeOrmOptions);
...
如果您管理不同的配置,您可能需要修改此代码段,以便您可以根据环境启用/禁用 ssl(开发模式下无 ssl,ts-node 以 .ts 格式获取实体等) ...).
如果你真的需要生成ormconfig.json,恐怕你得从脚本文件生成文件,用以前的代码,只需添加一个写入部分:
...
const json = JSON.stringify(typeOrmOptions, null, 2);
fs.writeFile("./target/ormconfig.json", json, (err) => {
if (err) {
console.error(err);
return;
}
console.log("File has been created");
});
我正在尝试将我的 Vesper 服务器部署到 Heroku,而 Vesper 需要一个 ormconfig.json 文件。
当我使用我的本地数据库时,这工作得很好,因为我可以填写所有将合并到连接字符串中的字段。但是,当我在 Heroku 中添加一个数据库时,我只得到了完整的 url 而我找不到把它放在哪里。
这是我现在的ormconfig.json。
{
"type": "postgres",
"host": "localhost",
"port": 5432,
"username": "postgres",
"password": "password",
"database": "test",
"synchronize": true,
"entities": ["target/entity/**/*.js"],
"migrations": ["target/migrations/*.js"],
"cli": {
"migrationsDir": "src/migrations"
}
}
我希望我可以仅用 database_url 替换大多数字段,但我找不到任何说明我应该使用什么名称的文档。
您可以使用 url 解析器进行 heroku env var 解析,例如 pg-connection-string
https://www.npmjs.com/package/pg-connection-string
然后你使用TypeOrm给的createConnection
函数在服务端初始化TypeOrm
import * as PostgressConnectionStringParser from "pg-connection-string";
const databaseUrl: string = process.env.DATABASE_URL;
const connectionOptions = PostgressConnectionStringParser.parse(databaseUrl);
const typeOrmOptions: PostgresConnectionOptions = {
type: "postgres",
name: connectionOptions.name,
host: connectionOptions.host,
port: connectionOptions.port,
username: connectionOptions.username,
password: connectionOptions.password,
database: connectionOptions.database,
synchronize: true,
entities: ["target/entity/**/*.js"],
extra: {
ssl: true
}
};
const connection = createConnection(typeOrmOptions);
...
如果您管理不同的配置,您可能需要修改此代码段,以便您可以根据环境启用/禁用 ssl(开发模式下无 ssl,ts-node 以 .ts 格式获取实体等) ...).
如果你真的需要生成ormconfig.json,恐怕你得从脚本文件生成文件,用以前的代码,只需添加一个写入部分:
...
const json = JSON.stringify(typeOrmOptions, null, 2);
fs.writeFile("./target/ormconfig.json", json, (err) => {
if (err) {
console.error(err);
return;
}
console.log("File has been created");
});