在 NestJS 和 TypeORM 0.3.17 中,如何创建将删除表的迁移?

问题描述 投票:0回答:1

我正在使用 NestJS 10 和 TypeORM 0.3.17 (PostGres 14 db)。我想创建一个将删除表的迁移。我已经在 src/config/data-source.ts 中定义了它

import * as dotenv from 'dotenv';
import * as dotenvExpand from 'dotenv-expand';
import { DataSource } from 'typeorm';
import {
  initializeTransactionalContext,
  addTransactionalDataSource,
} from 'typeorm-transactional';

const SnakeNamingStrategy =
  require('typeorm-naming-strategies').SnakeNamingStrategy;

dotenvExpand.expand(dotenv.config());

const dataSource = new DataSource({
  type: 'postgres',
  host: process.env.DATABASE_HOST,
  port: Number(process.env.DATABASE_PORT) || 5432,
  database: process.env.DATABASE_NAME,
  username: process.env.DATABASE_USERNAME,
  password: process.env.DATABASE_PASSWORD,
  entities: ['dist/**/*.entity.js'],
  migrations: ['dist/migrations/*.js'],
  extra: {
    charset: 'utf8mb4_unicode_ci',
  },
  namingStrategy: new SnakeNamingStrategy(),
});

initializeTransactionalContext();
addTransactionalDataSource(dataSource);

export default dataSource;

并在我的 package.json 中定义了它......

"typeorm": "npm run build && npx typeorm -d dist/config/data-source.js",
"migration:run": "npm run typeorm -- migration:run",
"migration:generate": "npm run typeorm -- migration:generate ./src/migrations/$npm_config_name",
"migration:create": "npm run typeorm -- migration:create ./src/migrations/$npm_config_name",
"migration:revert": "npm run typeorm -- -d ./src/config/typeorm.ts migration:revert"

但是,当我运行迁移:创建命令时,我收到这个令人费解的错误......

$ npm run migration:create --name=dropCategoriesTable

> [email protected] migration:create
> npm run typeorm -- migration:create ./src/migrations/$npm_config_name


> [email protected] typeorm
> npm run build && npx typeorm -d dist/config/data-source.js migration:create ./src/migrations/dropCategoriesTable


> custom-greeti[email protected] build
> nest build

typeorm migration:create <path>

Creates a new migration file.

Options:
  -h, --help       Show help                                           [boolean]
  -o, --outputJs   Generate a migration file on Javascript instead of Typescript
                                                      [boolean] [default: false]
  -t, --timestamp  Custom timestamp for the migration name
                                                       [number] [default: false]
  -v, --version    Show version number                                 [boolean]

Unknown argument: d

如何创建迁移以删除表?

postgresql nestjs migration typeorm drop
1个回答
0
投票

TypeORM 的文档对此进行了介绍。在 v0.3.0 中,您不再需要将数据源对象传递给迁移来创建迁移文件。您只需将路径传递到应创建迁移的位置即可。 当您运行迁移时是当您想要使用

-d
选项来告诉TypeORM它正在针对哪个数据源运行时。对于一个简单的桌子掉落,类似

import { MigrationInterface, QueryRunner } from "typeorm"

export class DropTableMigration implements MigrationInterface {
    async up(queryRunner: QueryRunner): Promise<void> {
      await queryRunner.query('DROP TABLE "table";')
    }

    async down(queryRunner: QueryRunner): Promise<void> {}
}

可能会做

© www.soinside.com 2019 - 2024. All rights reserved.