馃憟 En esta lectura est谩 la soluci贸n de como lograr las relaciones embebidas incluyendo el tipado.
Introducci贸n
驴Ya tomaste el Curso de NestJS: Programaci贸n Modular?
Instalaci贸n de Docker para este curso
Instalaci贸n de Platzi Store y presentaci贸n
Database
Configuraci贸n de Docker para MongoDB
Exploraci贸n de la base de datos con Mongo Compass
Instalando y conectando MongoDB Driver
Conexi贸n como inyectable
Ejecutando un query
Usando variables de ambiente en Mongo
Mongoose
驴Qu茅 es Mongoose? Instalaci贸n y configuraci贸n
Implementando Mongoose en M贸dulos
Conectando Mongo a los servicios
Create, update y delete
Pipe para mongoid
Agregando paginaci贸n
Agregando un filtro de rango para precios
Agregando indexadores
Relaciones en MongoDB
Relaciones uno a uno embebidas
Relaciones uno a uno referenciadas
Relaciones uno a muchos embebidas
C贸mo tipar relaciones uno a muchos embebidas
Relaciones uno a muchos referenciadas
Manipulaci贸n de arrays en MongoDB
Pr贸ximos pasos
Contin煤a con el Curso de NestJS: Autenticaci贸n con Passport y JWT
Contributions 3
Questions 4
馃憟 En esta lectura est谩 la soluci贸n de como lograr las relaciones embebidas incluyendo el tipado.
Para que Swagger se muestre correctamente se debe agregar:
@ApiProperty({ type: () => [CreateSubDocDto]})
readonly subDocs: CreateSubDocDto[];
De igual manera me parece que los tipos de las propiedades deben ser string en lugar de String, sino Swagger los muestra como objetos.
readonly description: string;
Les dejo el codigo para la solucion de la clase anterior:
// src/users/entities/skills.entity.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
@Schema()
export class Skill {
@Prop()
name: string;
@Prop()
color: string;
}
export const SkillSchema = SchemaFactory.createForClass(Skill);
// src/users/dtos/skills.dto.ts
import { IsNotEmpty, IsString } from 'class-validator';
import { PartialType } from '@nestjs/swagger';
export class CreateSkillDto {
@IsString()
@IsNotEmpty()
readonly name: string;
@IsString()
@IsNotEmpty()
readonly color: string;
}
export class UpdateSkillDto extends PartialType(CreateSkillDto) {}
Implementacion en el dto de customers
import { CreateSkillDto } from './skills.dto';
export class CreateCustomerDto {
...
@IsArray()
@IsNotEmpty()
@ValidateNested({ each: true })
@Type(() => CreateSkillDto)
readonly skills: CreateSkillDto[];
}
y en la entidad de customers
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document, Types } from 'mongoose';
import { Skill, SkillSchema } from './skills.entity';
@Schema()
export class Customer extends Document {
@Prop({ required: true, type: String })
name: string;
@Prop({ required: true, type: String })
email: string;
@Prop({
type: [SkillSchema],
})
skills: Types.Array<Skill>;
}
export const CustomerSchema = SchemaFactory.createForClass(Customer);
Want to see more contributions, questions and answers from the community?