Si todo es importante nada lo es.
Introducción
¿Ya terminaste el Curso de NestJS: Programación Modular?
Platzi Store: presentación del proyecto e instalación
Database
Cómo instalar Docker para este proyecto
Configuración de PostgresSQL en Docker
Explorando postgres con interfaces gráficas y terminal
Integración de node-postgres con NestJS
Conexión como inyectable y ejecutando un SELECT
Usando variables de ambiente
TypeORM
¿Qué es un ORM? Instalando y configurando TypeORM Module
Creando tu primera entidad
TypeORM: active record vs. repositories
Crear, actualizar y eliminar
Cambiar a Mysql demo (opcional)
Migraciones
Sync Mode vs. Migraciones en TypeORM
Configurando migraciones y npm scripts
Corriendo migraciones
Modificando una entidad
Relaciones
Relaciones uno a uno
Resolviendo la relación uno a uno en el controlador
Relaciones uno a muchos
Resolviendo la relación uno a muchos en el controlador
Relaciones muchos a muchos
Resolviendo la relación muchos a muchos en el controlador
Manipulación de arreglos en relaciones muchos a muchos
Relaciones muchos a muchos personalizadas
Resolviendo la relación muchos a muchos personalizada en el controlador
Consultas
Paginación
Filtrando precios con operadores
Agregando indexadores
Modificando el naming
Serializar
Migración a NestJS 9 y TypeORM 0.3
Actualizando Dependencias para NestJS 9
Cambios en TypeORM 0.3
Migraciones en TypeORM 0.3
Próximos pasos
Cómo solucionar una referencia circular entre módulos
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
Nicolas Molina
Aportes 4
Preguntas 0
Si todo es importante nada lo es.
Los indexadores nos sirven para optimizar una búsqueda a través de uno o mas atributos, por defecto el id esta indexado.
Solo debemos indexar algunos campos, si priorizamos todos los campos al final ningún campo lo será.
Para ello solo debemos agregar el decorator @Index()
//
...
@Entity()
@Index(['price', 'stock'])
export class Product {
@PrimaryGeneratedColumn()
...
}
No olvides correr las migraciones
npm run migrations:generate -- index-product
npm run migrations:run
Las indexaciones son un proceso que mediante unos parámetros nos ayuda a resolver la información de forma más rápida, lo que significa que en base a estos nos van a permitir priorizar recursos en las consultas para que estas sean más veloces.
Cabe recalcar que se debe usar la indexación de forma estratégica solo en las consultas más usadas en nuestra aplicación, ya que si abusamos de esta estrategia y todo es prioritario en nuestra aplicación, al final nada lo es.
En TypeORM no puede ser más fácil, vamos a la entidad de productos y veamos como se hace:
@Entity()
export class Product {
// ...
@Column({ type: 'int' })
// este decorador indica que el campo precio va a estar indexado
// todas las consultas que tengan que ver con el precio serán más rapidas
@Index()
price: number;
}
También podemos hacer indexaciones conjuntas, lo que significa que la consulta de dos propiedades consultadas a la vez tendrán prioridad. En caso de que queramos hacer una indexación conjunta, la tenemos que declarar como decorador directamente de la clase.
@Entity()
// en un array enviamo los atributos que esten indexados de forma conjunta
@Index(['price', 'stock'])
export class Product {
// ...
}
Y listo, con correr una migración más ya vas a tener los indexadores agregados a la tabla de productos.
👏
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?