Вы можете использовать парсер URL для разбора heroku env, например pg-connection-string
https://www.npmjs.com/package/pg-connection-string
Затем вы используете функцию createConnection
, заданную TypeOrm, для инициализации 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 в режиме dev, 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");
});