Bienvenido, soy Luis y aquí les traigo este post.
Un usuario ha accedido a su aplicación y navegado a la página de listados de productos para ver lo que está vendiendo.
Lo que aún no saben es que tienes cientos o miles de productos. Mostrarlos todos al usuario de una vez será demasiada información, lo que conducirá a una mala experiencia del usuario. Además, esto genera una carga innecesaria en la aplicación. Y debido a que es un ingeniero que crea aplicaciones escalables y enfocadas al usuario, eso es imposible para usted.
¿Cómo se asegurará de que tanto el usuario como la aplicación no estén sobrecargados con todos los productos?
Índice
Paginación
Esto se refiere a dividir un gran conjunto de datos en fragmentos más pequeños para que puedan ser absorbidos fácilmente tanto por la aplicación como por el usuario.
Hay dos tipos de paginación:
Paginación del lado del cliente
Esto implica que la aplicación cliente obtenga todos los datos. Luego decidirá cómo mostrar los datos que ha recibido.
Esto es ventajoso para aplicaciones que tienen pequeños conjuntos de datos y requieren cargas de página posteriores rápidas.
Paginación del lado del servidor
Esto implica que la aplicación cliente envíe parámetros como el tamaño de la página, el límite, el desplazamiento, el pedido, etc. al servidor, que luego responde con datos que coinciden con los parámetros.
Este método es bueno para aplicaciones que
- tener grandes conjuntos de datos
- tienen una lógica empresarial compleja
- debe ser resistente al cambio concurrente
- requieren cargas de página iniciales más rápidas
- debe ser accesible para aquellos que no ejecutan javascript
Nodo JS
Es un entorno de ejecución de Javascript impulsado por eventos construido en Chrome V8 que está diseñado para crear aplicaciones de red escalables.
No entraré en detalles de qué es Node JS, cómo hace lo que hace, pero puedes leer más sobre esto. artículo.
Sequelizar ORM
ORM significa Mapeador / mapeo relacional de objetos. De acuerdo a techopedia, es una técnica de programación en la que se utiliza un descriptor de metadatos para conectar el código objeto a una base de datos relacional. El código de objeto está escrito en lenguajes de programación orientada a objetos (OOP).
Sequelize es un Node.js basado en promesas ORM para Postgres, MySQL, MariaDB, SQLite y Microsoft SQL Server.
Puede leer más sobre la secuela en su documentos oficiales.
Supongo que ya tiene un proyecto Node JS configurado, así que iré directamente a la instalación de Sequelize ORM y Mysql.
Usando NPM run:
npm install --save sequelize mysql2
Usando hilo:
yarn add sequelize mysql2

Crear un utils carpeta. Esta carpeta albergará el código personalizado que será necesario en varios lugares de su aplicación.
Dentro de él crea los siguientes archivos
- database.js
- paginate.js
Dentro de database.js archivo pegue el siguiente código:
La pieza de código anterior es responsable de conectarse a Sequelize a nuestra elección de base de datos, en este caso mysql. Toma el nombre de la base de datos, nombre de usuario, contraseña, host y dialecto (tipo de base de datos).
El método de conexión se llama una vez al iniciar el servidor:
Cree un archivo javascript de modelo de producto llamado product.model.js. Dentro del archivo pega el siguiente código:
import { DataTypes, Model } from 'sequelize'; import { sequelize } from '../../utils/database'; class ProductModel extends Model {} const Product = Product.init({ id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING, allowNull: false, validate: { notNull: { msg: 'Name can not be null' } } }, slug: { type: DataTypes.STRING, unique: true, allowNull: false, validate: { notNull: { msg: 'Slug can not be null' } } }, description: { type: DataTypes.STRING, allowNull: false, validate: { notNull: { msg: 'Description can not be null' } } }, active: { type: DataTypes.INTEGER } }, { sequelize, timestamps: true, createdAt: 'created_at', updatedAt: 'updated_at', modelName: 'products' }); export default Product;
Cree un archivo javascript de controlador de producto llamado product.controller.js. Dentro del archivo, pegue el siguiente código para obtener una lista de productos paginados:
El código anterior es responsable de buscar productos. Toma una solicitud, obtiene los parámetros de consulta como página, límite, orden y crea objetos de búsqueda y orden.
El método de transformación es una función de mapa que le permite especificar cómo devolver los datos a la aplicación cliente o la aplicación que los solicita.
El modelo del producto junto con la página, el límite, el orden de búsqueda y la transformación se pasan al paginar método.
Recuerda el paginate.js archivo que creamos anteriormente? Ábrelo y pega el siguiente código:
El método paginate devuelve un objeto que contiene la página anterior, la página siguiente, la página actual, el total, el límite y las filas.
Lo bueno de este método de paginación es que acepta cualquier modelo, por lo que no tiene que escribir el código de paginación para cada modelo que tenga.
Los datos devueltos al acceder a la API del producto se ven así:
Proceda a iniciar su servidor de nodo y presione la solicitud de API que llama al lista de productos método del cartero (como una solicitud de obtención) o péguelo en su navegador. Pasa el página, límite y orden como consultas así:
http:localhost:3000/your-products-api?page=1&limit=10&order_by=created_at&order_direction=asc
Gracias por tomarse el tiempo de leer este artículo.
Añadir comentario