Querymen es un middleware que facilita la gestión de consultas (queries) en las rutas de una API en Node.js, particularmente cuando trabajas con bases de datos como MongoDB. Permite validar, filtrar y paginar fácilmente las consultas HTTP, simplificando el manejo de parámetros en endpoints RESTful.
Para utilizar Querymen en tu proyecto, primero debes instalarlo:
npm install querymen
Querymen se integra directamente en las rutas de Express, permitiendo definir reglas para los parámetros que esperas recibir en las consultas. Aquí un ejemplo básico de cómo usarlo:
1. Importa Querymen en tu archivo.
2. Configura las reglas de validación o filtrado para los parámetros de la consulta.
3. Usa Querymen en las rutas para manejar las consultas de los usuarios.
Ejemplo de uso:
const express = require('express');
const { middleware: querymen } = require('querymen');
const app = express();
// Definir la ruta con querymen para filtrar usuarios
app.get('/usuarios', querymen({
nombre: { type: String },
edad: { type: Number, min: 18 }, // Solo aceptar edades mayores de 18
activo: { type: Boolean }
}), (req, res) => {
const { query } = req;
// Aquí procesas la query, por ejemplo, usando un modelo de base de datos
res.json({ mensaje: 'Query procesada', filtros: query });
});
app.listen(3000, () => {
console.log('Servidor ejecutándose en http://localhost:3000');
});
Querymen permite filtrar por diferentes campos, paginar y limitar los resultados de una manera muy simple. Aquí un ejemplo para una API de productos:
app.get('/productos', querymen({
categoria: String,
precio: Number,
disponibilidad: Boolean
}, {
limit: 10, // Limitar a 10 resultados por página
page: 1 // Paginar resultados
}), (req, res) => {
const { query, select, cursor } = req;
// Realiza la consulta a la base de datos usando query, select y cursor
res.json({ query, select, cursor });
});
Querymen también permite seleccionar los campos que deseas devolver (select
) y ordenar los resultados (sort
):
app.get('/productos', querymen({
categoria: String,
precio: Number
}, {
sort: '-precio', // Ordenar por precio descendente
select: 'nombre precio' // Solo devolver el nombre y el precio
}), (req, res) => {
const { query, select, cursor } = req;
// Aquí puedes hacer una consulta a la base de datos usando estos parámetros
res.json({ query, select, cursor });
});
Para más información sobre el uso avanzado de Querymen, puedes consultar la documentación oficial de Querymen.
Jorge García
Fullstack developer