Node.js tiene muchos mapeadores relacionales de objetos (para bases de datos relacionales) que podemos elegir entre algunos de los más populares:
- Secuela
- Mangosta o prisma
- TipoORM
- Objection.js (Lea la documentación completa aquí )
¿Por qué considerar Objection.js?
Así que aquí hay algunas razones para considerar usarlo:
- Manera fácil de definir modelos y relaciones entre ellos.
- Cree consultas con async/await de Node.
- Utilice la carga ansiosa y las transacciones con sus modelos.
- Trabaje con documentos anidados en filas.
- Potentes mecanismos para insertar y alterar gráficos de objetos.
- Compatibilidad con TypeScript y validación de esquemas JSON.
Se deben seguir los siguientes pasos para instalar y usar Objection.js:
Entonces, la forma de instalarlo es instalar dos dependencias: knex y objeción usando el siguiente comando:
npm i knex -g --save npm i objection --save
Knex es un potente generador de consultas SQL (se utiliza un montón de ORM diferentes). Entonces, bajo el capó, la objeción usa Knex. Además de generar consultas SQL, Knex se utiliza para establecer conexiones de base de datos y conexiones de agrupación. También se utiliza para administrar esquemas de bases de datos a través de migraciones.
Es posible que también deba instalar un controlador de base de datos para cualquier base de datos SQL que desee usar. Algunas opciones disponibles, solo instálelas usando el siguiente comando:
npm i pg npm i sqlite3 npm i mysql npm i mariasql
Creación de una base de datos:
Nombre de archivo: app.js
const { Client } = require('pg'); const { db } = require('./config'); const client = new Client(); (async () => { await client.connect(); await client.query(`CREATE DATABASE ${db.connection.database}`); await client.end(); })();
Creando Migraciones:
- Las migraciones le permiten aplicar un cambio a un esquema de base de datos paso a paso.
- La acción «arriba» aplica un cambio (crear una tabla, agregar/modificar una columna, etc.).
- La acción «abajo» aplica la acción inversa del cambio (por ejemplo, si la acción «arriba» de una migración crea una tabla, su acción «abajo» equivalente eliminará la tabla).
- Knex creará una carpeta de migración (a menos que ya exista).
- Luego crea un archivo en la carpeta de migraciones para la migración.
knex migrate:make create_tasks_table
Las migraciones generadas se verán así:
Nombre de archivo: empty_migration.js
exports.up = function (knex, Promise) { }; exports.down = function (knex, Promise) { };
Ahora podemos realizar ciertas acciones como crear una tabla:
Nombre de archivo: knex_migration.js
const tableName = 'tasks'; exports.up = knex => { // Create the tasks table return knex.schema.createTable(tableName, table => { table.increments('id').primary(); table.string('name'); table.date('due_by'); table.boolean('is_done').defaultTo(false); table.timestamps(true, true); table.unique(['name']); }); }; exports.down = knex => { // Drop the tasks table return knex.schema.dropTableIfExists(tableName); };
Ahora, si desea ejecutarlos, el siguiente código lo ejecutará:
knex migrate:latest
Modelos:
- Los modelos son los envoltorios de las tablas de la base de datos.
- Ayudan a encapsular la lógica empresarial dentro de esas tablas (relaciones, validaciones, índices, disparadores).
- Objection.js le permite crear modelos usando clases ES6.
A continuación se muestra un ejemplo realmente agradable y simple:
Nombre de archivo: TaskModel.js
// Task Model const { MODEL } = require('objection'); const db = require('../db'); // Pass he knex connection to Objection Model.knex(db); class Task extends Model { // Tells objection what the db // table is for the model static get tableName() { return 'tasks'; } } module.exports = Task;
La estructura del proyecto se verá así:
- Consulta de selección simple:
nombre de archivo: select_query.sqlSELECT * from tasks;
Se puede hacer con:
Nombre de archivo: objeción_select_query.jsconst tasks = await Task.query();
- Consulta SELECT típica:
Nombre de archivo: standard_select_query.sqlSELECT * from tasks WHERE is_done = false ORDER BY due_by asc;
Se puede hacer con:
Nombre de archivo: objeción_estándar_select_query.jsconst tasks = await Task.query() .where({is_done: false}).orderBy('due_by');
- Insertar consulta:
Nombre de archivo: insert_query.sqlINSERT INTO tasks (name) VALUES ('Setup Code Coverage');
Se puede hacer con:
Nombre de archivo:object_insert_query.jsawait Task.query().insert({ name: 'Setup Code Coverage' });
- Consulta de actualización:
Nombre de archivo: update_query.sqlUPDATE tasks SET is_done = true WHERE id = 1;
Se puede hacer con:
Nombre de archivo:object_insert_query.jsawait Task.query().patch({ is_done: true }).where({ id: 1 });
Si usamos el archivoobject_standard_query.js para verificar la salida, la salida se verá así:
Entonces, las consultas de Objeción son realmente poderosas y fáciles de usar.
Publicación traducida automáticamente
Artículo escrito por sachinjangid y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA