LoopBack, conceptos básicos

Archivada en Desarrollo Web

LoopBack, conceptos básicos

Antes de enfrascarnos en la aventura de usar un nuevo backend para el Cuadro de Mando, debemos conocer los conceptos claves del diseño de LoopBack, lo que sin duda nos permitirá comprender mejor su funcionamiento.

Modelos

Los modelos son el corazón de LoopBack y corresponden con las fuentes de datos como bases de datos u otros servicios, por ejemplo REST, SOAP, etc. Los modelos de LoopBack son objetos de JavaScript con APIs tanto en Node como REST.

Atención

Una de las mejores características de LoopBack es que cuando definimos un modelo, automáticamente se crea una API REST predefinida con un conjunto completo de operaciones para crear, leer, actualizar y borrar registros.

Un objeto que usa el modelo Básico tiene métodos para agregar ganchos o hooks y para validar datos. Todos los demás modelos heredan estos métodos. Los modelos tienen una herencia jerárquica que podemos ver en la figura siguiente:

cuando agregamos un modelo a una fuente persistente de datos, se convierte en un modelo conectado con operaciones CRUD., es decir Crear, Leer, Actualizar y Borrar. Del mismo modo, los modelos internos heredan sus propiedades de este modelo.

Modelos internos

Cada aplicación de LoopBack tiene un conjunto predefinido de modelos internos, como User, Role, Application, de modo que no tengamos que crearlos desde cero.

Modelos personalizados

Podemos definir nuestros propios modelos extendiendo los modelos internos para agregarles funciones a los modelos User o Application y a otros modelos internos.

Podemos crear modelos de varias maneras, que dependen del tipo de datos en los que se base el modelo. Podemos crear los modelos:

  • Con el generador de modelos de LoopBack, del que ya vimos un ejemplo.
  • De una base de datos relacionan, usando el descubrimiento de modelos. Con esto podemos mantener nuestros modelos sincronizados con la base de datos usando la API sincronización modeloesquema/ de LoopBack.
  • Usando introspección de instancias para modelos de formato libre en bases NoSQL o APIs REST.

Los tres métodos crean un archivo JSON de “definición de modelo” que define nuestros modelos en LoopBack en la ruta por default common/models; por ejemplo common/models/sitios.json.

También podemos crear modelos personalizados programáticamente usando la API de LoopBack o editando manualmente el archivo JSON de definición de datos. En muchos casos, no necesitaremos usar esta técnica para crear los modelos, pero si para editarlos.

Nota

El archivo JSON de definición de Modelo incluye la propiedad idInjection que indica que LoopBack agrega automáticamente la propiedad id a un modelo. Para un modelo conectado a la base de datos la propiedad id corresponde a la clave primaria.

Relaciones

Se pueden expresar las relaciones entre modelos como uno-a-uno o BelongsTo, uno-a-muchos o HasMany y HasAndBelongToMany.

Operaciones CRUD con modelos

Cuando se conecta un modelo a una fuente persistente de datos como una base de datos se convierte en un modelo conectado con un conjunto completo de operaciones para crear, leer, actualizar y borrar (es decir, operaciones CRUD) heredadas desde la clase PersistedModel:

Operación REST Método LoopBack SQL
Crear PUT /modelo POST /modelo create() INSERT
Leer (recuperar) GET /modelo?filtro= find() SELECT
Actualizar (modificar) POST /modelo updateAll() UPDATE
Borrar (Destruir) DELETE /modelo/ID destroyByID() DELETE

Lógica de la aplicación

Se puede agregar la lógica de negocios de varias maneras; por ejemplo:

  • Agregando la lógica de negocios a los modelos a través de métodos remotos (endpoints remotos a la medida), ganchos o hooks remotos que se disparan por métodos remotos y hooks de operación que se disparan por los métodos crear, recuperar, actualizar y borrar.
  • Agregando guiones de arranque cuando inicia la aplicación.
  • Definiendo intermediarios o middleware a la medida antes de guardar el modelo en el soporte de datos.

También se puede agregar códigos para validar la información antes de guardarla en el soporte.

Fases intermedias

El intermediario o middleware es una función que se ejecuta cuando se hacen solicitudes HTTP a un endpoint REST. Ya que LoopBack está basado en Express, el middleware de LoopBack es el mismo que el middleware de Express. Sin embargo, LoopBack agrega el concepto de fase, para definir claramente el orden en el que se llama a los intermediarios. Usando las fases evitamos problemas de orden que pueden ocurrir con el middleware estándar de Express.

LoopBack generaliza los servicios back-end como bases de datos, APIs REST, servicios web SOAP y servicios de almacenamiento de datos como data sources.

Los data sources son soportados por conectores que se comunican directamente con la base de datos y otros servicios de back-end. Las aplicaciones no usan los conectores directamente, en lugar de eso, lo hacen a través de los data sources usando las APIs DataSource y PersistedModel.

Componentes de LoopBack

Los componentes de LoopBack proporcionan funcionalidades adicionales tipo “conectar y usar”.

  • Notificaciones Push - permiten enviar información a aplicaciones móviles para su visualización en los medios que ofrecen los dispositivos.
  • Componente de almacenamiento - permite subir y bajar archivos en proveedores de almacenamiento en la nube (Amazon, Rackspace, Openstack, Azure) así como en el sistema de archivos del servidor.
  • Acreditación de terceros - integra Passport y permite usar credenciales de acreditación de terceros como Facebook, Google, Twitter, Github o cualquier sistema que soporte OAuth, OAuth 2 u OpenID.
  • Sincronización - permite que las aplicaciones móviles operen fuera de línea y sincronice sus datos con el servidor cuando se re conecten.
  • OAuth 2.0 - permite que las aplicaciones de LoopBack funcionen como proveedores OAuth 2.0 para acreditar y autorizar aplicaciones clientes y usuarios y que puedan acceder a endpoints protegidos.

Como podemos ver, ofrece las mismas funciones de Django y Django REST Framework al mismo tiempo, en una sola aplicación. Veamos como convertimos el código actual del CMI a este nuevo esquema MEAN: Mongo + Express + Angular + Node con LoopBack.

Javier Sanchez Toledano

Auditor Líder ISO 9000 ● Desarrollo Web Full Stack ● Django/Python ● JavaScript · NodeJS · Angular · VueJS · EmberJS ● Swift 4 ● WordPress · Genesis Framework ● Lector ● Fotografo aficionado ● Generación X ● Soy de Tlaxcala

Tlaxcala, México

Comentarios