@teamnet/ic-orm
v1.2.8
Published
Database Management System for Total.js v4 and standalone
Maintainers
Readme
This ORM Works only for iCOne Systems. PLease, use Total.js Version for free.
Node Database Management System (ORM)
- Documentation
- Website
- Documentation
- Chat support
- Join Total.js Telegram
- Support
- supports
PostgreSQL,MySQL, Total.jsTextDBandMongoDB(with connection pooling)
📚 Documentación Completa
Esta librería incluye documentación completa y detallada para desarrolladores:
🍃 MongoDB - Documentación Completa
Guías completas para trabajar con MongoDB:
- 59 tests certificados ✅
- Guía de Inicio Rápido
- Connection Pooling y ReplicaSets
- Operaciones CRUD
- Query Builder Avanzado
- Operadores Matemáticos
- Operaciones Avanzadas (Scalar, GridFS, Aggregation)
- Ejemplos Prácticos
🐘 PostgreSQL - Documentación Completa
Guías completas para trabajar con PostgreSQL:
- 108 tests certificados ✅
- Guía de Inicio Rápido
- Connection Pooling v16 Optimizado
- Operaciones CRUD
- Query Builder Avanzado
- Operadores (GREATEST, LEAST, NOT)
- Operaciones Avanzadas (Transacciones ACID, JSONB)
- Ejemplos Prácticos
Total: 8,735+ líneas de documentación profesional | 167 tests certificados
Initialization
- installation
$ npm i @teamnet/ic-orm- install MySQL:
$ npm install mysql2 - install PostgreSQL:
$ npm install pg - install MongoDB:
$ npm install mongodb
- install MySQL:
const dbms = require('@teamnet/ic-orm');
dbms.init([alias], connection_string);
// @alias {String} Optional, alias for connection string (default: 'default')
// @connection_string {String} A connection string to DB
// PostgreSQL
dbms.init('postgresql://user:pass@localhost:5432/dbname');
dbms.init('mypg', 'postgresql://user:pass@localhost:5432/dbname?max=10'); // with a name and connection pool
// MySQL & Maria DB
dbms.init('mysql://user:pass@localhost:3306/dbname');
dbms.init('mysql', 'mysql://user:pass@localhost:3306/dbname?max=10'); // with a name and connection pool
// MongoDB
dbms.init('mongodb://user:pass@localhost:27017/dbname');
dbms.init('mongo', 'mongodb://user:pass@localhost:27017/dbname?max=10'); // with a name and connection pool
// MongoDB with ReplicaSet
dbms.init('mongodb://user:pass@server1:27017,server2:27017,server3:27017/dbname?replicaSet=rs0&readPreference=secondaryPreferred&max=30');
// Total.js NoSQL embedded
dbms.init('nosql');
dbms.init('mynosql', 'nosql'); // with a name for more DB engines
// Total.js Table
dbms.init('table');
dbms.init('mytable', 'nosql'); // with a name for more DB enginesUsage
// Is a global method
var db = DBMS();
// Finds records
// A response: Array
// returns QueryBuilder
db.find('collection_table_name');
db.find('mypg/collection_table_name');
db.find('mynosql/collection_table_name');
db.find('mytable/collection_table_name');
// Finds the one record
// A response: Object
// returns QueryBuilder
db.one('collection_table_name');
db.one('mypg/collection_table_name');
db.one('mynosql/collection_table_name');
db.one('mytable/collection_table_name');
// Inserts a new record
// A response: Number
// returns QueryBuilder
db.insert('collection_table_name', document, [unique]);
db.insert('mypg/collection_table_name', document, [unique]);
db.insert('mynosql/collection_table_name', document, [unique]);
db.insert('mytable/collection_table_name', document, [unique]);Connection Pooling
ICORM soporta connection pooling para PostgreSQL, MySQL y MongoDB. Los parámetros de configuración se pasan a través de la cadena de conexión.
PostgreSQL Connection Pool
// Formato: postgresql://user:pass@host:port/dbname?max=10&min=2&timeout=1000
// - max: número máximo de conexiones en el pool (por defecto: 8, recomendado: 8-20)
// - min: número mínimo de conexiones en el pool (por defecto: 2, recomendado: 2-4)
// - timeout: tiempo de inactividad en milisegundos (por defecto: 30000)
// - ssl: habilitar SSL (true/false)
// - pooling: habilitar pooling (por defecto: true)
// - native: usar bindings nativos (opcional)
dbms.init('postgresql://user:pass@localhost:5432/dbname?max=10&min=2&timeout=10000');
// Configuración optimizada para alta concurrencia (PostgreSQL v16):
dbms.init('postgresql://user:[email protected]:5432/pro_icone?max=8&min=2&timeout=10000');Mejoras PostgreSQL v16:
- ✅ Pool compartido con reconexión automática
- ✅ Reintentos inteligentes con backoff exponencial
- ✅ Manejadores de eventos del pool
- ✅ Soporte para
maxUses(previene memory leaks) - ✅ Compatible con PostgreSQL v16 y driver
pgv8.x
MySQL Connection Pool
// Formato: mysql://user:pass@host:port/dbname?max=10
// - max: límite de conexiones (connectionLimit) (por defecto: 4)
// - ssl: habilitar SSL (true/false)
dbms.init('mysql://user:pass@localhost:3306/dbname?max=10');MongoDB Connection Pool
// Formato: mongodb://user:pass@host:port/dbname?max=10
// - max o maxPoolSize: número máximo de conexiones en el pool (por defecto: 10)
// - Soporta todas las opciones estándar de MongoDB como replicaSet, readPreference, etc.
dbms.init('mongodb://user:pass@localhost:27017/dbname?max=10');
// Ejemplo con ReplicaSet
dbms.init('mongodb://user:pass@server1:27017,server2:27017,server3:27017/dbname?replicaSet=rs0&readPreference=secondaryPreferred&max=30');Cierre de conexiones
Puedes cerrar explícitamente las conexiones para MongoDB y PostgreSQL:
MongoDB:
const mongo = require('./mongo');
// Cerrar la conexión explícitamente
await mongo.disconnect();
// O con callback
mongo.disconnect(function() {
console.log('Conexión MongoDB cerrada');
});PostgreSQL:
const pg = require('./pg');
// Cerrar todos los pools de PostgreSQL
await pg.disconnect();
// O con callback
pg.disconnect(function(err) {
if (err) console.error('Error al cerrar pools:', err);
else console.log('Pools de PostgreSQL cerrados');
});En Total.js v4 (al cerrar la aplicación):
// definitions/events.js
ON('exit', async function() {
console.log('Cerrando conexiones de base de datos...');
await require('icorm/pg').disconnect();
await require('icorm/mongo').disconnect();
console.log('Conexiones cerradas correctamente');
});📖 Más Información
Para aprender más sobre cómo usar icorm con MongoDB o PostgreSQL, consulta la documentación completa:
- 🍃 MongoDB - Documentación Completa - Guías, ejemplos y mejores prácticas
- 🐘 PostgreSQL - Documentación Completa - Guías, transacciones ACID y operaciones avanzadas
- 📚 Índice General - Vista general de toda la documentación
Incluye:
- Guías de inicio rápido paso a paso
- Connection pooling optimizado
- Operaciones CRUD completas
- Query Builder avanzado con todos los operadores
- Operaciones matemáticas y SQL específicas
- Transacciones, Scalar operations, BLOB storage
- Ejemplos prácticos de sistemas completos
- Solución de problemas y mejores prácticas
✅ Todo verificado con 167 tests certificados (59 MongoDB + 108 PostgreSQL)
👥 Autor y Mantenimiento
icorm v1.2.0 - Actualizado y mantenido por Teamnet.S.L.
- 🔧 Mejoras de PostgreSQL v16 con connection pooling optimizado
- 🔧 Soporte completo para MongoDB con ReplicaSets
- 🔧 Reintentos automáticos con backoff exponencial
- 🔧 Event handlers y gestión avanzada de pools
- 📚 Documentación completa profesional (8,735+ líneas)
- ✅ 167 tests certificados
Basado en Total.js DBMS - Framework original por Total.js Platform
📄 Licencia
Esta es una versión modificada y mejorada del ORM de Total.js, mantenida por Teamnet.S.L. para uso interno y de clientes.
Para la versión pública original, consulta: Total.js DBMS
