Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript
Clase 24 de 36 • Curso de NestJS: Persistencia de Datos con TypeORM
Contenido del curso
- 3
Instalación de Docker en Windows, macOS y Ubuntu
01:35 - 4

Configuración de Postgres en Docker Compose
09:18 - 5

Conexión a Postgres en Docker: Terminal y PgAdmin
15:16 - 6

Conexión de NestJS a Postgres con Node Postgres
07:28 - 7

Inyección de Dependencias en NETJS: Conexión a PostgreSQL
10:49 - 8

Conexión a Bases de Datos con Variables de Entorno en Node.js
13:49
- 9

Implementación de TypeORM con NestJS en Proyectos Node.js
09:14 - 10

Creación de Entidades en ORM para Tiendas Virtuales
07:46 - 11

Implementación del Patrón Repository en NestJS con TypeORM
13:31 - 12

Operaciones CRUD en ProductService usando TypeORM y Postgres
13:35 - 13

Cambio de Postgres a MySQL en Docker para CRUD de Productos
17:28
- 18

Relaciones 1 a 1 en Bases de Datos con TimeORM
18:58 - 19

Manipulación de Relaciones Uno a Uno en Controladores y Servicios
10:28 - 20

Relaciones Uno a Muchos en Bases de Datos con TypeORM
10:36 - 21

Gestión de Relaciones Uno a Muchos en Controladores de API
10:27 - 22

Relaciones Muchos a Muchos en Time1M: Creación y Manejo Práctico
08:38 - 23

Manipulación de Relaciones Muchos a Muchos en Controladores
15:08 - 24

Manipulación de Relaciones Muchos a Muchos con TimeORM en JavaScript
19:09 - 25

Relaciones Muchos a Muchos con Campos Agregados en TimeWareM
16:41 - 26

CRUD de órdenes de compra y gestión de ítems en NestJS
30:07
- 27

Paginación de Productos con Limit y Offset en Controladores API
10:37 - 28

Filtrado de Precios con Rango Usando Between en Time Wareham
10:17 - 29

Indexación de Parámetros en Bases de Datos: Uso y Precauciones
02:56 - 30

Buenas prácticas de nombramiento en JavaScript y bases de datos
17:52 - 31

Serialización y Transformación de Datos en APIs con ClassTransformer
16:55
¿Cómo manipular relaciones muchos a muchos con arreglos?
Las relaciones muchos a muchos en bases de datos suelen ser complicadas, especialmente cuando se trata de agregar o eliminar categorías de un producto sin necesidad de enviar todo el arreglo que define esas relaciones. Si bien la solución básica puede parecer frustrante al tener que enviar cada elemento, hay técnicas y herramientas que simplifican este proceso. En este artículo, desentrañaremos cómo manejar estas relaciones utilizando TimeORM y manipulación de arreglos.
¿Cómo agregar o eliminar categorías de un producto?
Para manipular la relación muchos a muchos de un producto y sus categorías, una forma efectiva es mediante la utilización de métodos específicos en los servicios. Esto evita la reconfiguración completa de las categorías cada vez que deseamos agregar o eliminar una.
-
Uso de Arrays en la Creación y Actualización:
- Al crear un producto, se envía el array de los IDs de categorías con las que se va a relacionar.
- Para actualizar, simplemente se envía un nuevo conjunto de IDs, permitiendo agregar o eliminar al enviar sólo las categorías deseadas.
-
Eliminar una Categoría:
- Puedes crear un método asíncrono para remover una categoría de un producto.
- Usa
filteren JavaScript para manipular el array sin alterar (mutar) el array original.
product.categories = product.categories.filter(item => item.id !== categoryId); -
Agregar una Categoría:
- Para agregar, se emplea el método
push, que muta el array original para añadir la nueva categoría.
product.categories.push(category); - Para agregar, se emplea el método
¿Cómo implementar un controlador para estos métodos?
Una vez establecido el servicio para agregar o eliminar categorías, es fundamental conectarlo mediante controladores que puedan interactuar mediante HTTP.
-
Método para eliminar una categoría:
Se define un endpoint que recibe el
productIdy elcategoryIdpara realizar la operación de eliminación.@Delete(':productId/category/:categoryId') deleteCategoryFromProduct(@Param('productId') productId, @Param('categoryId') categoryId) { return this.productService.removeCategory(productId, categoryId); } -
Método para agregar una categoría:
Similarmente, para agregar una categoría, se configura un endpoint que admite operaciones tipo
PUT.@Put(':productId/category/:categoryId') addCategoryToProduct(@Param('productId') productId, @Param('categoryId') categoryId) { return this.productService.addCategory(productId, categoryId); }
¿Cómo hacer pruebas en Insomnia o Postman?
Probar estos métodos puede hacerse fácilmente mediante herramientas como Insomnia o Postman:
-
Para eliminar una categoría:
- Configurar una solicitud
DELETEcon la URL estructurada para indicar elproductIdy elcategoryId.
- Configurar una solicitud
-
Para agregar una categoría:
- A través de una solicitud
PUT, indicar los mismos parámetros para ver cómo se actualiza el listado de categorías del producto.
- A través de una solicitud
Este enfoque elegante para la manipulación de relaciones muchos a muchos mejora no solo la eficiencia del código, sino también su legibilidad y mantenimiento. Al desglosar las tareas en métodos específicos para eliminar o agregar, podemos llevar una administración más cohesionada y efectiva de nuestros datos.
Espero que este conocimiento te inspire a optimizar tus proyectos de bases de datos, y te recuerde que siempre hay formas más eficientes de manejar la complejidad cuando abordas el problema desde el ángulo correcto. ¡Sigue explorando y perfeccionando tus habilidades en desarrollo web!