node.js - TypeORM:在没有专用 ormconfig 文件的情况下生成迁移
问题描述
在TypeORM (json、env、yml...)提供的几种连接数据库的方法中,我选择使用常规 TypeScript 文件在项目代码中以编程方式设置连接选项,如下所示:
// src/database/createConnection.ts
import { createConnection } from 'typeorm';
const connectionOptions = {
type: 'postgres',
host: POSTGRES_HOST_PROD,
port: Number(POSTGRES_PORT),
username: POSTGRES_USER,
password: POSTGRES_PASSWORD,
database: POSTGRES_DB,
entities: ['build/entities/**/typeDef.js'],
migrations: ['build/database/migrations/*.js'],
cli: {
migrationsDir: 'src/database/migrations/'
}
};
await createConnection(connectionOptions);
使用常规.env
文件提供的值。
我的问题是,当尝试通过创建迁移文件时npx typeorm migration:generate -n initial
出现错误,因为命令需要存在特定的 orm 配置文件(ormconfig.env、ormconfig.json 等)。
由于我已经设置了连接选项,这不仅是多余的,它还将被处理而不是我已经在.ts
文件中设置的配置,我看到的唯一解决方案是重命名我的 (non-typeorm -specific ).env
文件以匹配特定的 TypeORM 变量名称,我不想这样做。
TL:DR有没有一种方法可以在不创建专用 orm 配置文件的情况下生成 TypeORM 迁移?
解决方案
哦,原来 TypeORM 已经有一个内置选项,不需要额外的 ormconfig 文件,只需将属性添加migrationsRun: true
到连接选项(确保synchronize
设置为 false)。
例如:
从'typeorm'导入{createConnection};
const connectionOptions = {
type: 'postgres',
host: POSTGRES_HOST_PROD,
port: Number(POSTGRES_PORT),
username: POSTGRES_USER,
password: POSTGRES_PASSWORD,
database: POSTGRES_DB,
migrationsRun: true,
entities: ['build/entities/**/typeDef.js'],
migrations: ['build/database/migrations/*.js'],
cli: {
migrationsDir: 'src/database/migrations/'
}
};
等待创建连接(连接选项);
推荐阅读
- kendo-ui - 用于按钮的 Kendo Ui Grid Web 可访问性,例如 Excel 导出
- python-3.x - 在不同的函数中使用 sys.stdin.readlines() 后,如何在使用 input() 时消除错误 'EOFError: EOF?
- javascript - Javascript Filereader 只允许 .log 文件?
- spring - Spring batch xml repositoryitemwriter 模式占位符表单属性
- python-3.x - 在python中添加变量
- python - re.findall 不符合我所期望的一切
- php - 访问被拒绝 - Laravel/MySQL
- python - 如何使用 Python 写入文本文件,以便我可以在终端/gnuplot 中同时读取它
- java - 如何通过 Self Link 在 Spring Data REST 服务器中加载实体?
- powershell - 如何使用powershell检查下载的文件是否存在