Algunas cosas en TypeORM son diferentes actualmente (versión 0.3.7) a como están la lección de Configurando migraciones y npm scripts
- Ya no existe documentación acerca de archivos de configuración como el
ormconfig.json
o las variables de entorno - Los comandos del CLI funciona de una manera diferente
Con respecto al CLI, yo hice estos cambios para que me funcione. Me parece que pueden ser mejorables pero no he encontrado una mejor manera de momento
Crear un archivo con una instancia de DataSource
Ahora el CLI te pide que al momento de correr un comando especifiques un archivo donde se encuentre una instancia de la clase DataSource
Yo tengo esto en src/database/dataSource.ts
import { DataSource } from 'typeorm';
exportconst connectionSource = new DataSource({
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'root',
password: 'root',
database: 'my_db',
logging: true,
synchronize: false,
entities: ['src/**/*.entity.ts'],
migrations: ['src/database/migrations/*.ts'],
});
Cambios en los comandos del CLI
El comando typeorm
en el package.json
cambió al igual que el comando para generar las migraciones
"typeorm": "typeorm": "typeorm-ts-node-commonjs"
"migration:generate": "yarn typeorm migration:generate -d src/database/dataSource.ts"
Lo importante a notar acá es que:
- Usando el flag
-d
o--dataSource
se debe pasar el path donde tenemos nuestra instancia del DataSource que essrc/database/dataSource.ts
en mi caso - El CLI ya no acepta el flag
-n
para indicar el nombre con el que se creará el archivo con la migración - Para correr el comando
migration:generate
es necesario especificar elpath
donde queremos que se cree la migración y así también especificar el nombre del archivo
Yo he corrido el comando de esta manera dondeinit
es el nombre que le estoy dando al archivo
yarn migration:generate src/database/migrations/init
Es importante notar que a diferencia de la lección, yo estoy usandoyarn
en lugar denpm
Cosas a cambiar usandonpm
: - En lugar de correr el comando con
yarn
usarnpm run
"migration:generate": "npm run typeorm migration:generate -d src/database/dataSource.ts"
npm run migration:generate src/database/migrations/init
Recomendaciones
Estar atento a la documentación de TypeORM y Nestjs que actualmente se encuentra desactualizada en algunas secciones. Seguramente se publicará una mejor manera de hacer esto en el futuro ya que hacerlo de esta manera funciona pero se está creando 2 instancias de DataSource
- Una en
DatabaseModule
con elTypeOrmModule
- Y otra con este nuevo archivo
Curso de NestJS: Persistencia de Datos con TypeORM