NestJS

Nest

Tutorial Nest: Decoradores en entidades

Nest TypeORM decoradores entidades: uso. Aprende a usar decoradores de entidades en Nest con TypeORM mediante ejemplos prácticos.

Aprende Nest y certifícate

Un decorador es un patrón de diseño que permite a los usuarios agregar responsabilidades adicionales a un objeto de manera dinámica.

En el contexto de la programación, en particular en TypeScript y NestJS, un decorador es una función especial que puede ser usada para extender la funcionalidad de clases, métodos, propiedades o parámetros.

Decoradores en entidades con TypeORM

Cuando se trabaja con bases de datos en NestJS, especialmente con TypeORM, se utilizan decoradores para definir y configurar entidades.

Estos decoradores permiten mapear clases TypeScript a tablas de bases de datos y establecer relaciones entre ellas.

Decoradores de entidad y columna

  • @Entity(): Marca una clase como una entidad de base de datos.

    @Entity()
    export class User {}
    
  • @PrimaryGeneratedColumn(): Define una columna primaria autoincrementada.

    @PrimaryGeneratedColumn()
    id: number;
    
  • @Column(...): Estos decoradores definen columnas en la base de datos y pueden aceptar opciones para especificar detalles como el tipo de datos, longitud, si es único, etc.

    @Column({ type: 'varchar', length: 100 })
    name: string;
    

Decoradores de relaciones

  • @OneToOne(): Establece una relación uno a uno entre dos entidades.

    @OneToOne(type => Profile)
    profile: Profile;
    
  • @OneToMany() y @ManyToOne(): Establecen relaciones uno a muchos y muchos a uno.

    @OneToMany(type => Photo, photo => photo.user)
    photos: Photo[];
    
    // En otra entidad:
    @ManyToOne(type => User, user => user.photos)
    user: User;
    
  • @ManyToMany() y @JoinTable(): Establecen relaciones muchos a muchos.

    @ManyToMany(type => Category)
    @JoinTable()
    categories: Category[];
    

Decoradores de índices y opciones adicionales

  • @Index(): Define un índice para una columna o un conjunto de columnas.

    @Index("user_name_index", ["name"])
    
  • @Unique(): Define una restricción única para una columna.

    @Column({ unique: true })
    email: string;
    
  • @CreateDateColumn() y @UpdateDateColumn(): Crean columnas automáticas para rastrear las fechas de creación y actualización.

    @CreateDateColumn()
    createdAt: Date;
    
    @UpdateDateColumn()
    updatedAt: Date;
    
  • @VersionColumn(): Crea una columna de versión para el control de concurrencia optimista.

    @VersionColumn()
    version: number;
    

Decoradores de herencia

  • @Inheritance() y @DiscriminatorColumn(): Se usan para establecer estrategias de herencia, como la estrategia "Single Table" o "Table per Class".

    @Entity()
    @Inheritance({ strategy: 'SINGLE_TABLE' })
    @DiscriminatorColumn({ name: 'type', type: 'varchar' })
    export class Content {}
    

Conclusión

Los decoradores proporcionan una manera de definir metadatos y modificar el comportamiento de las clases y sus miembros en NestJS. En el contexto de las entidades, los decoradores simplifican significativamente la tarea de mapear clases a tablas de bases de datos, permitiendo que la definición del modelo y la lógica estén estrechamente integradas en un solo lugar.

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

Plan mensual

19.00 € /mes

Precio normal mensual: 19 €
47 % DE DESCUENTO

Plan anual

10.00 € /mes

Ahorras 108 € al año
Precio normal anual: 120 €
Aprende Nest online

Ejercicios de esta lección Decoradores en entidades

Evalúa tus conocimientos de esta lección Decoradores en entidades con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Nest

Accede a todas las lecciones de Nest y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a Nest y certifícate

Certificados de superación de Nest

Supera todos los ejercicios de programación del curso de Nest y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  1. Comprender el concepto de decoradores en NestJS.
  2. Explorar los decoradores utilizados en las entidades con TypeORM.
  3. Aprender a utilizar los decoradores en las entidades.