npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

pols-sequelize-helper

v2.1.1

Published

`pols-sequelize-helper` es una biblioteca de utilidades y helpers para **Sequelize (v6)** que facilita la realización de consultas avanzadas, paginación automática, generación de consultas SQL y filtrado de texto insensible a acentos/tildes en dialectos c

Readme

pols-sequelize-helper

pols-sequelize-helper es una biblioteca de utilidades y helpers para Sequelize (v6) que facilita la realización de consultas avanzadas, paginación automática, generación de consultas SQL y filtrado de texto insensible a acentos/tildes en dialectos como MSSQL y Postgres.


Características Principales

  • Filtrado Inteligente con Acentos y Diacríticos: Genera condiciones WHERE insensibles a mayúsculas/minúsculas y acentos (á, é, í, ó, ú, ü) de forma nativa para MSSQL y PostgreSQL, con fallback automático para otros dialectos (MySQL, SQLite, MariaDB).
  • Búsqueda con Comodines: Soporte para comodines utilizando el asterisco (*) en los tokens de búsqueda.
  • Paginación Automática: Método findAllByPage que gestiona el cálculo total de filas (count), el número total de páginas (totalPages), la página actual (currentPage) y la extracción del subconjunto paginado (limit y offset) en una sola llamada.
  • Simplificación de Ordenamiento Relacionado: Permite ordenar por campos de modelos asociados usando el alias (as) directamente en la definición del orden, sin necesidad de instanciar o pasar las clases del modelo manualmente.
  • Generación de SQL Síncrona: Métodos selectQuery y countQuery para previsualizar u obtener las cadenas SQL generadas por Sequelize sin necesidad de ejecutar la consulta contra el servidor.
  • Evita Efectos Secundarios (Inmutabilidad): Clona automáticamente las opciones suministradas por el usuario antes de procesarlas para evitar la mutación inesperada de los objetos de configuración.

Instalación

Instala el paquete a través de npm:

npm install pols-sequelize-helper

Nota: Asegúrate de tener sequelize y pols-utils instalados en tu proyecto.


API y Ejemplos de Uso

1. Filtrado de Texto (Filtros Acústicos y Diacríticos)

Puedes aplicar filtros de texto insensibles a tildes y mayúsculas sobre múltiples campos.

import { findAll } from 'pols-sequelize-helper';
import { Usuario } from './models';

const usuarios = await findAll(Usuario, {
  filter: {
    text: 'Ramón', // Coincidirá con "ramon", "Ramon", "ramón", etc.
    fields: ['Nombres', 'Apellidos']
  }
});

Búsqueda con comodines:

El caracter * se traduce automáticamente a comodines % en la base de datos:

const usuarios = await findAll(Usuario, {
  filter: {
    text: 'Ra*l', // Coincidirá con "Raul", "Raúl", "Rael", etc.
    fields: ['Nombres']
  }
});

2. Paginación con findAllByPage

El método findAllByPage calcula automáticamente la cantidad total de registros y extrae la página seleccionada.

import { findAllByPage } from 'pols-sequelize-helper';
import { Producto } from './models';

const resultado = await findAllByPage(Producto, {
  page: 2,
  rowsPerPage: 10,
  where: { Activo: true },
  order: [['Nombre', 'asc']]
});

console.log(resultado.rows);        // Array de 10 productos (página 2)
console.log(resultado.rowsCount);   // Total de productos que cumplen la condición
console.log(resultado.totalPages);  // Total de páginas calculadas
console.log(resultado.currentPage); // Página actual devuelta

3. Ordenamiento Simplificado en Relaciones

En Sequelize estándar, ordenar por un modelo relacionado requiere pasar la clase del modelo. Con este helper, puedes hacerlo especificando la ruta de la relación mediante sus aliases (as).

import { findAll } from 'pols-sequelize-helper';
import { Padre } from './models';

const registros = await findAll(Padre, {
  include: [{ as: 'Hijos' }],
  order: [
    // Ordena por el campo 'Dato' del modelo asociado con el alias 'Hijos'
    [[{ as: 'Hijos' }, 'Dato', 'asc']]
  ]
});

4. Generación de Consultas SQL (selectQuery y countQuery)

Obtén la consulta SQL cruda que Sequelize generaría para una configuración dada, útil para depuración o ejecución manual.

import { selectQuery, countQuery } from 'pols-sequelize-helper';
import { Cliente } from './models';

// Obtener SQL de selección
const sqlSelect = selectQuery(Cliente, {
  where: { Activo: true },
  filter: { text: 'sanchez', fields: ['Apellidos'] }
});
console.log(sqlSelect); 
// "SELECT ... FROM [Clientes] WHERE [Clientes].[Activo] = 1 AND ... LIKE '%sanchez%'"

// Obtener SQL de conteo
const sqlCount = countQuery(Cliente, {
  where: { Activo: true }
});
console.log(sqlCount);
// "SELECT count(*) AS [count] FROM [Clientes] WHERE [Clientes].[Activo] = 1"

5. Métodos Adicionales

  • findOne(model, options): Igual a Model.findOne, pero aplica los filtros filter, el orden simplificado y la resolución de alias en el include de forma automática.
  • findOrBuild(model, options): Igual a Model.findOrBuild, con soporte automático de filtros y resolución de asociaciones.
  • count(model, options): Ejecuta un conteo optimizado. Descarta asociaciones muchos-a-muchos o uno-a-muchos irrelevantes que no alteren el resultado final, pero conserva de forma inteligente aquellas relaciones marcadas como requeridas (required: true) o que contengan filtros activos (where o filter).

Dialectos Soportados

  1. Microsoft SQL Server (mssql): Soporte nativo para eliminación de acentos usando niveles anidados de la función replace (incluyendo soporte de ü -> u).
  2. PostgreSQL (postgres): Soporte nativo y rápido utilizando la función translate (ej. translate(col, 'áéíóúü', 'aeiouu')).
  3. Otros Dialectos (MySQL, SQLite, MariaDB, etc.): Fallback automático que aplica un filtrado Op.like o Op.iLike estándar sobre el valor en minúsculas del campo.