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

Typescript 使用NestJS和TypeORM为项目生成迁移文件,typescript,nestjs,typeorm,Typescript,Nestjs,Typeorm,我试图为实体生成迁移文件,但每当我运行命令创建实体时,它都会创建一个“空”文件,只创建up和down方法 我在package.json文件中添加了这个脚本:“typeorm”:“node——需要ts node/register/node\u modules/typeorm/cli.js” 在my app.module.ts中,连接配置如下: TypeOrmModule.forRoot({ type: 'mysql', host: database().host,

我试图为实体生成迁移文件,但每当我运行命令创建实体时,它都会创建一个“空”文件,只创建up和down方法

我在package.json文件中添加了这个脚本:
“typeorm”:“node——需要ts node/register/node\u modules/typeorm/cli.js”

在my 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文件。为此,您需要两个文件,一个用于服务器连接,另一个用于迁移配置

例如:

// 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,
    }


好的,现在如果我运行命令npm run migration generate Test,它会说在数据库模式中没有发现任何更改-无法生成迁移。我是否需要创建迁移并手动编写其中的SQL代码来创建表?您是否已经创建了表?如果是,则清除模式,删除表或删除模式然后重新创建它,然后运行migration generate。此错误表示您的数据库中已经有与项目中的实体匹配的表。还没有,我的数据库是空的。迁移表中有迁移吗?我从数据库中删除了所有内容,只有一个数据库没有任何表。如果我运行npm运行migration generate,我收到一条消息,说在数据库架构中找不到任何更改。如果我运行migration create,它会在migration文件夹中创建一个文件,但up和down方法为空。它应该使用一些SQL代码创建一个迁移文件,还是我需要编写该SQL代码?
// 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"
}