Introducci贸n

1

驴Ya terminaste el Curso de NestJS: Programaci贸n Modular?

2

Platzi Store: presentaci贸n del proyecto e instalaci贸n

Database

3

C贸mo instalar Docker para este proyecto

4

Configuraci贸n de PostgresSQL en Docker

5

Explorando postgres con interfaces gr谩ficas y terminal

6

Integraci贸n de node-postgres con NestJS

7

Conexi贸n como inyectable y ejecutando un SELECT

8

Usando variables de ambiente

TypeORM

9

驴Qu茅 es un ORM? Instalando y configurando TypeORM Module

10

Creando tu primera entidad

11

TypeORM: active record vs. repositories

12

Crear, actualizar y eliminar

13

Cambiar a Mysql demo (opcional)

Migraciones

14

Sync Mode vs. Migraciones en TypeORM

15

Configurando migraciones y npm scripts

16

Corriendo migraciones

17

Modificando una entidad

Relaciones

18

Relaciones uno a uno

19

Resolviendo la relaci贸n uno a uno en el controlador

20

Relaciones uno a muchos

21

Resolviendo la relaci贸n uno a muchos en el controlador

22

Relaciones muchos a muchos

23

Resolviendo la relaci贸n muchos a muchos en el controlador

24

Manipulaci贸n de arreglos en relaciones muchos a muchos

25

Relaciones muchos a muchos personalizadas

26

Resolviendo la relaci贸n muchos a muchos personalizada en el controlador

Consultas

27

Paginaci贸n

28

Filtrando precios con operadores

29

Agregando indexadores

30

Modificando el naming

31

Serializar

Migraci贸n a NestJS 9 y TypeORM 0.3

32

Actualizando Dependencias para NestJS 9

33

Cambios en TypeORM 0.3

34

Migraciones en TypeORM 0.3

Pr贸ximos pasos

35

C贸mo solucionar una referencia circular entre m贸dulos

36

Contin煤a con el Curso de NestJS: Autenticaci贸n con Passport y JWT

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Corriendo migraciones

16/36
Recursos

Aportes 6

Preguntas 2

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Lo que vimos fue:

package.json

"scripts": {
    "migrations:generate": "npm run typeorm -- migration:generate -n",
    "migrations:run": "npm run typeorm -- migration:run",
    "migrations:show": "npm run typeorm -- migration:show",
    "migrations:drop": "npm run typeorm -- migration:drop"
  },

database.module.ts

imports: [
    TypeOrmModule.forRootAsync({
      inject: [config.KEY],
      useFactory: (configService: ConfigType<typeof config>) => {
        const { user, password, host, dbName, port } = configService.postgres;

        return {
          type: 'postgres',
          host,
          port,
          username: user,
          password,
          database: dbName,
          synchronize: false,
          autoLoadEntities: true,
        };
      },
    }),
  ],

Los comandos que utilisamos fueron:

Para crear la migration en la base de datos

npm run migrations:run

Para ver. quemigrations han sido creados

npm run migrations:run

Si le agregan el revert esta bueno experimentarlo, mas que nada para volver a atras los cambios en caso de que se haya detectado algun bug y tengas que salir a patchear la version que sacaste.

Agregas en el package.json

    "migrations:revert": "npm run typeorm -- migration:revert"

Este el output:

query: SELECT * FROM "information_schema"."tables" WHERE "table_schema" = current_schema() AND "table_name" = 'migrations'
query: SELECT * FROM "migrations" "migrations" ORDER BY "id" DESC
1 migrations are already loaded in the database.
init1621883836551 is the last executed migration. It was executed on Mon May 24 2021 16:17:16 GMT-0300 (Argentina Standard Time).
Now reverting it...
query: START TRANSACTION
query: DROP TABLE "user"
query: DROP TABLE "customer"
query: DROP TABLE "product"
query: DROP TABLE "category"
query: DROP TABLE "brand"
query: DELETE FROM "migrations" WHERE "timestamp" = $1 AND "name" = $2 -- PARAMETERS: [1621883836551,"init1621883836551"]
Migration init1621883836551 has been reverted successfully.
query: COMMIT

Alguien mas en vez de drop puso hakai? xD

Un tip para el script de generar migraciones: agreguen el argumento -p (pretty) para que los comandos SQL autogenerados en el archivo de migraciones tengan un formato multil铆nea m谩s f谩cil de leer.

# package.json
# ...
scripts:
	# ...
	"migrations_generate":  "npm run typeorm -- migration:generate -p -n"
# ...

Corriendo migraciones

Es importante que al momento de correr migraciones tengamos desactivado el modo s铆ncrono de nuestra base de datos:

  • src/database/database.module.ts:
@Module({
  imports: [
    TypeOrmModule.forRootAsync({
      inject: [config.KEY],
      useFactory: (configService: ConfigType<typeof config>) => {
        const { user, host, dbName, password, port } = configService.postgres;
        return {
          // ...
          synchronize: false,
          autoLoadEntities: true,
        };
      },
    }),
  ],
  exports: [TypeOrmModule],
})

En caso de que tengas tus tablas creadas y no te permita ejecutar la migraci贸n, debes borrar las tablas.

Ahora, para correr las migraciones solo debemos a帽adir los siguientes scripts en nuestro **package.json**:

{
  "scripts": {
		// correr la 煤ltima migraci贸n creada
		"migration:run": "npm run typeorm migration:run",
    
		// muestra las migraciones ejecutadas anteriormente
		"migration:show": "npm run typeorm migration:show",

		// borra TODAS lAS TABLAS (Peligroso)
		"migration:drop": "npm run typeorm migration:drop",

		// Revierte la 煤ltima migraci贸n hecha
		"migration:revert": "npm run typeorm migration:revert",
  },
}

Para correr estos comandos, recordemos que tenemos que correr el comando:

npm run <script>

Y listo, as铆 es como corremos migraciones.

En esta versi贸n, adem谩s del comando con el flag -d debemos indicar donde est谩n las migraciones, adem谩s de crear el datasource para la conexi贸n con la base de datos鈥