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 GRATIS 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.

Aprende Nest GRATIS 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.