我正在使用 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
如何创建迁移以删除表?
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> {}
}
可能会做