How migrations work?
Once you get into production you'll need to synchronize model changes into the database.
Typically, it is unsafe to use synchronize: true for schema synchronization on production once
you get data in your database. Here is where migrations come to help.
A migration is just a single file with SQL queries to update a database schema and apply new changes to an existing database.
Let's say you already have a database and a Post entity:
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm"
@Entity()
export class Post {
@PrimaryGeneratedColumn()
id: number
@Column()
title: string
@Column()
text: string
}
And your entity worked in production for months without any changes. You have thousands of posts in your database.
Now you need to make a new release and rename title to name.
What would you do?
You need to create a new migration with the following SQL query (PostgreSQL dialect):
ALTER TABLE "post" RENAME COLUMN "title" TO "name";
Once you run this SQL query your database schema is ready to work with your new codebase. TypeORM provides a place where you can write such sql queries and run them when needed. This place is called "migrations".