¿Cómo crear paginación en Node.js usando skip and limit?

Nodejs es un entorno de tiempo de ejecución multiplataforma y de código abierto para ejecutar código JavaScript fuera del navegador. Es ampliamente utilizado en el desarrollo de API y microservicios desde pequeñas hasta grandes empresas. Es una gran herramienta ya que permite a los desarrolladores usar JavaScript tanto en el servidor como en el cliente.

¿Qué es la paginación?

La paginación es un método muy útil. Esto permite al cliente obtener datos en páginas. Esto se logra mediante el uso de opciones de omisión y límite, lo que brinda a los clientes un control total de la página (datos) que están recuperando.

Prerrequisitos: Conocimientos básicos de Nodejs y Mongodb.

¿Cuándo usar Paginación?

Como lo describe su declaración, se debe usar Paginación:

  • Cuándo los clientes deberían tener el control de los datos que están recuperando.
  • Mejora de la experiencia del usuario (UX) y mejor navegación.

Creando un proyecto

Paso 1: Cree una nueva carpeta para un proyecto usando el siguiente comando:

mkdir pagination

Paso 2: Navega a nuestra carpeta usando el siguiente comando:

cd pagination

Paso 3: Inicialice npm usando el siguiente comando y archivo de servidor:

npm init -y
touch index.js

Paso 4: Instale los paquetes requeridos usando el siguiente comando:

npm i express mongoose 

Estructura del proyecto: se verá así

Ejemplo 1: sin usar la paginación

index.js

// Requiring module
const express = require('express');
const mongoose = require('mongoose');
const port = 3000;
const app = express();
  
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
  
// Database URL
const MONGODB_URL = 'mongodb://127.0.0.1/pagination';
  
// Connecting Database through mongoose(ORM For Mongodb)
mongoose
    .connect(MONGODB_URL, {
        useCreateIndex: true,
        useFindAndModify: false,
        useUnifiedTopology: true,
        useNewUrlParser: true,
    })
    .then(() => {
        console.log('Database connected');
    })
    .catch((err) => {
        console.log('Error in connecting database');
    });
  
// Creating Schema for Posts, then it will
// be used in creating Model
const PostSchema = new mongoose.Schema({
    name: String,
    date: {
        type: Date,
        default: Date.now(),
    },
});
  
const postModel = new mongoose.model('PostModel', PostSchema);
  
// For creating Posts
app.post('/', async (req, res) => {
    const post = new postModel(req.body);
    await post.save();
    res.status(201).send('Successfully created');
});
  
// For Fetching Post
app.get('/', async (req, res) => {
    try {
        const posts = await postModel.find();
        res.status(200).send(posts);
    } catch (e) {
        console.log(e);
    }
});
  
// Starting the server
app.listen(port, () => {
    console.log(`Started at ${port}`);
});

Ejecute el servidor usando el siguiente comando:

node index.js

Inserción en la base de datos: los datos se insertan con la ayuda de Postman a través del siguiente método:

Insertar base de datos haciendo una solicitud de publicación en la ruta ‘/’ a través de Postman.

Salida: sin paginación

Obtención de datos a través de Postman sin usar Paginación.

Como se puede ver en el ejemplo anterior, sin paginación, se obtendrán todos los documentos. Para tener más claro el uso y la necesidad de Paginación. Piense en este caso cuando hay miles de documentos en lugar de solo 4.

Ejemplo 2: con el uso de paginación

Para omitir y limitar la paginación, los parámetros se usarán usando el método de límite y omisión junto con find.

index.js

// Requiring module
const express = require('express');
const mongoose = require('mongoose');
const port = 3000;
const app = express();
  
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
  
// Database URL
const MONGODB_URL = 'mongodb://127.0.0.1/pagination';
  
// Connecting Database through mongoose(ORM For Mongodb)
mongoose
    .connect(MONGODB_URL, {
        useCreateIndex: true,
        useFindAndModify: false,
        useUnifiedTopology: true,
        useNewUrlParser: true,
    })
    .then(() => {
        console.log('Database connected');
    })
    .catch((err) => {
        console.log('Error in connecting database');
    });
  
// Creating Schema for Posts, then it will
// be used in creating Model
const PostSchema = new mongoose.Schema({
    name: String,
    date: {
        type: Date,
        default: Date.now(),
    },
});
  
const postModel = new mongoose.model('PostModel', PostSchema);
  
// For creating Posts
app.post('/', async (req, res) => {
    const post = new postModel(req.body);
    await post.save();
    res.status(201).send('Successfully created');
});
  
// For Fetching Post
app.get('/', async (req, res) => {
    try {
        // Adding Pagination
        const limitValue = req.query.limit || 2;
        const skipValue = req.query.skip || 0;
        const posts = await postModel.find()
            .limit(limitValue).skip(skipValue);
        res.status(200).send(posts);
    } catch (e) {
        console.log(e);
    }
});
  
// Starting the server
app.listen(port, () => {
    console.log(`Started at ${port}`);
});

Ejecute el servidor usando el siguiente comando:

node index.js

Salida: con paginación

La paginación con limit=2 y skip=0 devuelve los primeros 2 documentos,

Publicación traducida automáticamente

Artículo escrito por namancourses y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *