typescript - TypeORM-migrering skapar inte de nödvändiga tabellerna, istället skapas bara en tabell som heter migration


Jag bygger en backend-applikation med TypeScript, TypeORM och Postgres. Efter att ha genererat och kört mina migrationer, istället för att skapa tabellerna för de entiteter jag skrev, skapar den bara en enda tom tabell med 3 kolumner som heter 'migrations'.

Jag förstår inte varför det händer. Här följer kommandot jag använde för att generera mina migrationer:

"migration:generate": "typeorm-ts-node-commonjs -d ./src/database/data-source.ts migration:generate ./src/migration/default"

Det här är kommandot jag använde för att köra migrationerna:

"migration:run": "typeorm-ts-node-commonjs -d ./src/database/data-source.ts migration:run"

Och så här ser min kod ut:

det här är min DataSource-instans:

export const AppDataSource = new DataSource({
 type: "postgres",
 host: process.env.DB_HOST,
 port: Number(process.env.DB_PORT),
 username: process.env.DB_USER,
 password: process.env.DB_PASSWORD,
 database: process.env.DB_NAME,
 synchronize: false,
 logging: false,
 entities: [`${__dirname}/**/entity/*.{ts,js}`],
 migrations: [`${__dirname}/**/migration/*.{ts,js}`],
});

Jag ber om ursäkt för att jag skrev ut istället för att klistra in koden här, men eftersom migreringen ser ganska stor ut kommer jag att lämna en utskrift av den här ifall något i den kan hjälpa till att identifiera problemet. Dessutom genererades migreringen automatiskt:

migration

Någon som har någon idé om varför mina tabeller inte skapas? All hjälp skulle uppskattas.

Svar #1

De kommandon du använder verkar vara korrekta, och när du kör en migration bör en post av den läggas till i din databas och tabellerna och data i din databas bör skapas som förväntat. Problemet kan vara med migrationsparametern i din datakällkonfiguration. Om du har samma problem som jag hade, där migrationer som finns i "src/migration/" inte kördes, försök använda följande inställning för migrationsparametern:

  migrations: ["src/migration/**/*.ts"],

Hoppas det hjälper!

Svar #2

Du bör prova följande skript för migration:generate:

"migration:generate": "typeorm-ts-node-commonjs -d ./src/database/data-source.ts -- migration:generate ./src/migration/"

Ta bort default eftersom du använder sökväg:

export const AppDataSource = new DataSource({
 ...
 migrations: [`${__dirname}/**/migration/*.{ts,js}`],
});

Efter att ha kört migration:generate, kontrollera sedan alla filer *.ts som skapats i ./src/migration och se ändringarna (Om det inte fungerar, kontrollera vänligen enheterna och migrationssökvägen).

Slutligen, kör migration:run för att tillämpa ändringar på databasen.