Podemos observar mejor la relaciona entre las tablas con el mapa relacion
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
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
Aportes 2
Preguntas 2
Podemos observar mejor la relaciona entre las tablas con el mapa relacion
Resumen de la clase
// src\users\entities\order.entity.ts
import {
PrimaryGeneratedColumn,
UpdateDateColumn,
CreateDateColumn,
ManyToOne,
Entity,
OneToMany,
} from 'typeorm';
import { Customer } from './customer.entity';
import { OrderItem } from './order-item.entity';
@Entity()
export class Order {
@PrimaryGeneratedColumn()
id: number;
@CreateDateColumn({
type: 'timestamptz',
default: () => 'CURRENT_TIMESTAMP',
})
createAt: Date;
@UpdateDateColumn({
type: 'timestamptz',
default: () => 'CURRENT_TIMESTAMP',
})
updateAt: Date;
@ManyToOne(() => Customer, (customer) => customer.orders)
customer: Customer;
@OneToMany(() => OrderItem, (item) => item.order)
items: OrderItem[];
}
// src\users\entities\customer.entity.ts
import {
...
OneToMany,
} from 'typeorm';
import { User } from './user.entity';
import { Order } from './order.entity';
@Entity()
export class Customer {
...
@OneToMany(() => Order, (order) => order.customer)
orders: Order[];
}
import {
PrimaryGeneratedColumn,
UpdateDateColumn,
CreateDateColumn,
Entity,
Column,
ManyToOne,
} from 'typeorm';
import { Product } from '../../products/entities/product.entity';
import { Order } from './order.entity';
@Entity()
export class OrderItem {
@PrimaryGeneratedColumn()
id: number;
@CreateDateColumn({
type: 'timestamptz',
default: () => 'CURRENT_TIMESTAMP',
})
createAt: Date;
@UpdateDateColumn({
type: 'timestamptz',
default: () => 'CURRENT_TIMESTAMP',
})
updateAt: Date;
@Column({ type: 'int' }) // columna que se agrega a la relacion
quantity: number;
@ManyToOne(() => Product) // en este caso no es funcional la relaci贸n bidireccional
product: Product;
@ManyToOne(() => Order, (order) => order.items)
order: Order;
}
...
import { Order } from './entities/order.entity';
import { OrderItem } from './entities/order-item.entity';
@Module({
imports: [
...
TypeOrmModule.forFeature([User, Customer, Order, OrderItem]),
],
...
})
export class UsersModule {}
npm run migrations:generate --orders
npm run migrations:run
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.