Definición de Esquemas en Mongoose para eCommerce con NestJS
Clase 11 de 24 • Curso de NestJS: Persistencia de Datos con MongoDB
Contenido del curso
Database
- 4

Configuración y ejecución de MongoDB con Docker Compose
08:51 min - 5

Conexión a Base de Datos MongoDB con Mongo Compass
05:05 min - 6

Instalación y conexión de MongoDB en Node con driver oficial
06:59 min - 7

Inyección de Conexiones MongoDB en Servicios NestJS
06:57 min - 8

Consultas a MongoDB con Nest.js: Implementación de Endpoints
04:46 min - 9

Variables de Entorno para Configuración de MongoDB en Node.js
10:43 min
Mongoose
- 10

Instalación y Configuración de Mongoose con NestJS
07:52 min - 11

Definición de Esquemas en Mongoose para eCommerce con NestJS
Viendo ahora - 12

Operaciones CRUD con MongoDB y Node.js en un Servicio de Productos
09:29 min - 13

Creación, actualización y eliminación de productos en MongoDB
10:12 min - 14

Validación de MongoID con Pipes en NestJS
06:38 min - 15

Paginación en MongoDB con DTOs y Validaciones en NestJS
11:13 min - 16

Consultas Avanzadas con Rangos de Precios en MongoDB
07:30 min - 17

Indexación en MongoDB: Cómo optimizar consultas rápidas
03:11 min
Relaciones en MongoDB
- 18

Relaciones embebidas en MongoDB: Manejo y ejemplos prácticos
07:55 min - 19

Relaciones uno a uno referenciadas en MongoDB
12:20 min - 20

Relaciones Uno a Muchos en MongoDB: Arrays Embebidos vs Referenciados
09:28 min - 21
Tipado de Documentos Embebidos en NestJS con Mongoose
01:49 min - 22

Relaciones Uno a Muchos Referenciadas en MongoDB
14:36 min - 23

Manipulación de Arrays en E-commerce: Métodos y Endpoints
13:08 min
Próximos pasos
Además de realizar la conexión a la base de datos, Mongoose permite el mapeo de información para estandarizar su estructura en cada colección de MongoDB.
Creando entidades con Mongoose
Crear entidades para darle forma a tus datos es tarea simple gracias a Mongoose.
Paso 1: creación de la entidad y sus propiedades
Suponiendo que necesitas una colección en Mongo para almacenar productos, comienza creando un archivo llamado product.entity.ts en el módulo de productos de tu aplicación.
// modules/products/product.entity.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
@Schema()
export class Product extends Document {
@Prop({ required: true })
name: string;
@Prop()
description: string;
@Prop({ type: Number })
price: number;
@Prop({ type: Number })
stock: number;
@Prop()
image: string;
}
export const ProductSchema = SchemaFactory.createForClass(Product);
Observa el decorador @Prop() para mapear cada atributo de la clase Product que extiende de Document e indicarle a Mongoose que se trata de una propiedad del documento. Exportando ProductSchema que, gracias a SchemaFactory que es el responsable de crear y realizar el mapeo de datos, podrás realizar las posteriores consultas desde los servicios.
Paso 2: importación de la entidad
Ahora solo tienes que importar la entidad en el módulo al que pertenece de la siguiente manera:
// modules/products/products.module.ts
import { MongooseModule } from '@nestjs/mongoose';
import { Product, ProductSchema } from './entities/product.entity';
@Module({
imports: [
MongooseModule.forFeature([
{
name: Product.name,
schema: ProductSchema,
},
])
]
})
export class ProductsModule {}
Importa MongooseModule y tienes que asignarle un nombre a la colección e inyectarle el schema que utilizará.
De esta forma, estarás creando la colección products en tu base de datos MongoDB y ya tienes mapeada en tu aplicación la estructura de cada documento que contendrá para evitar errores.
Contribución creada por: Kevin Fiorentino.
Código de ejemplo para implementar Mongoose
// src/products/entities/product.entity.ts
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';
@Schema()
export class Product extends Document {
@Prop({ required: true })
name: string;
@Prop()
description: string;
@Prop({ type: Number })
price: number;
@Prop({ type: Number })
stock: number;
@Prop()
image: string;
}
export const ProductSchema = SchemaFactory.createForClass(Product);
// src/products/products.module.ts
...
import { MongooseModule } from '@nestjs/mongoose';
import { Product, ProductSchema } from './entities/product.entity';
@Module({
imports: [
MongooseModule.forFeature([
{
name: Product.name,
schema: ProductSchema,
},
]),
],
...
})
export class ProductsModule {}