gpt4 book ai didi

typescript - 使用 NestJS 和 TypeORM 为项目生成迁移文件

转载 作者:行者123 更新时间:2023-12-03 18:43:19 38 4
gpt4 key购买 nike

我正在尝试为我的实体生成迁移文件,但是每当我运行命令来创建实体时,它都会创建一个“空”文件,只创建 up 和 down 方法。
我在 package.json 文件中添加了这个脚本: "typeorm": "node --require ts-node/register ./node_modules/typeorm/cli.js"
在我的 app.module.ts 中,连接是这样配置的:

 TypeOrmModule.forRoot({
type: 'mysql',
host: database().host,
port: parseInt(database().port),
username: database().username,
password: database().password,
database: database().schema,
entities: [Question, QuestionOption],
migrations: ['src/migration/*{.ts,.js}'],
cli: {
migrationsDir: 'src/migration'
},
synchronize: true,
})
其中 database() 它是一个 nestjs 配置文件,并从 .env 文件中获取值。
我用来创建迁移的脚本是: npm run typeorm migration:create -- -n QuestionTables -d src/migrations 其中需要指定 -d ,否则不会创建迁移文件(即使它在 forRoot 方法的 cli 中指定。
我是否需要手动编写 SQL 来创建表?
如果我需要向现有表添加新列,我应该创建一个新的迁移文件并手动编写 SQL 代码来添加它吗?
我尝试运行的另一个命令是: npm run typeorm migration:generate -- -n QuestionTables -d src/migrations,在这里它给了我一个错误:“错误:在任何 orm 配置文件中都找不到连接选项。”

最佳答案

命令 npm run typeorm migration:create 将生成空的迁移文件。
迁移自动生成命令是:npm run typeorm migration:generate正如您收到的错误中所写,您需要为 cli 指定配置文件。这意味着应该将传递给 forRoot 的配置提取到 ts/json 文件中。为此,您需要 2 个文件,1 个用于服务器连接,另一个用于迁移配置。
例如:

// ormconfig.ts
export const config: TypeOrmModuleOptions = {
type: 'mysql',
host: database().host,
port: parseInt(database().port),
username: database().username,
password: database().password,
database: database().schema,
entities: [Question, QuestionOption], // maybe you should also consider chage it to something like: [__dirname + '/**/*.entity.ts', __dirname + '/src/**/*.entity.js']
migrations: ['src/migration/*{.ts,.js}'],
cli: {
migrationsDir: 'src/migration'
},
synchronize: true,
}

// ormconfig-migrations.ts

import {config} from './ormconfig';

export = config;

import {config} from './ormconfig';

TypeOrmModule.forRoot(config);
// package.json

"scripts": {
...
"typeorm:cli": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli -f ./ormconfig-migrations.ts",
"migration-generate": "npm run typeorm:cli -- migration:generate -n"
}

关于typescript - 使用 NestJS 和 TypeORM 为项目生成迁移文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63848877/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com