Version: 2.5.0 (última)

Los Modelos User y Story

Ahora que la conexión a la base de datos está establecida, puede crear sus dos entidades User y Story.

La entidad User será el modelo utilizado por el framework para identificar a los usuarios y la entidad Story representará las publicaciones de los usuarios.

El modelo User#

Abra el archivo user.entity.ts del directorio entities y añada cuatro nuevas propiedades a su modelo: email, password, name y avatar.

La columna avatar contendrá las rutas de acceso a las imágenes del perfil.

También tendrá que exportar un modelo adicional DatabaseSession del paquete @foal/typeorm. No necesita preocuparse por ello ahora, se utilizará más adelante en el tutorial cuando añada la autenticación.

import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class User extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Column({ unique: true })
email: string;
@Column()
password: string;
@Column()
name: string;
@Column()
avatar: string;
}
// This line is required. It will be used to create the SQL session table later in the tutorial.
export { DatabaseSession } from '@foal/typeorm';

El modelo Story#

A continuación, cree su segunda entidad.

foal generate entity story

Abra el nuevo archivo y añada tres nuevas propiedades: autor, título y enlace.

import { BaseEntity, Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
import { User } from './user.entity';
@Entity()
export class Story extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(type => User, { nullable: false })
author: User;
@Column()
title: string;
@Column()
link: string;
}

Por defecto, TypeORM permite que las relaciones many-to-one sean anulables. La opción pasada al decorador especifica que ésta no puede serlo.

Ejecute las migraciones#

Por último, cree las tablas en la base de datos. Genere las migraciones a partir de las entidades y ejecútelas.

npm run makemigrations
npm run migrations

Se añaden tres nuevas tablas a la base de datos: las tablas user y story y una tabla sessions.

+------------+-----------+-------------------------------------+
| user |
+------------+-----------+-------------------------------------+
| id | integer | PRIMARY KEY AUTO_INCREMENT NOT NULL |
| email | varchar | UNIQUE NOT NULL |
| password | varchar | NOT NULL |
| name | varchar | NOT NULL |
| avatar | varchar | NOT NULL |
+------------+-----------+-------------------------------------+
+------------+-----------+-------------------------------------+
| story |
+------------+-----------+-------------------------------------+
| id | integer | PRIMARY KEY AUTO_INCREMENT NOT NULL |
| authorId | integer | NOT NULL |
| title | varchar | NOT NULL |
| link | varchar | NOT NULL |
+------------+-----------+-------------------------------------+