Uso de FeathersJS para acceder a MariaDB con codificación mínima Parte I

Ejemplo simple de CRUD usando FeathersJS y Sequelize, Parte I

Este es el primer artículo de una serie de tres partes. Esta serie de artículos se centrará en la creación de una interfaz CRUD completa. Se anima al lector a instalar opcionalmente Postman y simular los mismos pasos utilizando una interfaz REST.

NOTA: Estoy omitiendo toda la seguridad de inicio de sesión en aras de la simplicidad. FeathersJS tiene excelentes características de seguridad que son muy fáciles de instalar y este tema se trató a fondo en mi artículo anterior .

Todos los pasos de esta serie de artículos de tres partes se pueden realizar haciendo referencia al proyecto sql-tiny de Github FastFeathers . Sin embargo, se anima al lector a seguir los pasos descritos como experiencia de aprendizaje.

Artículo segundo de la serie de tres partes
Artículo tercero de la serie de tres partes

INTRODUCCIÓN

En mi último artículo , demostré cómo FeathersJS se puede usar fácilmente con una combinación de otras tecnologías para crear una interfaz similar a una hoja de cálculo para cualquier base de datos relacional compatible con Sequelize (de hecho, podemos usar cualquier base de datos compatible con feathersJS).

Como resumen, puede pensar en FeathersJS como un marco completo que une la versatilidad de Sequelize con la simplicidad de Socket.io. Por supuesto, no es necesario que use ninguno de estos, ya que FeathersJS continúa agregando más interfaces de base de datos y acceso a la red. Pero para nuestros propósitos aquí, nos quedaremos solo con Sequelize y Socket.io.

Este artículo se centra en lo increíblemente simple que es crear una aplicación FeathersJS y, lo que es más importante, interactuar con su nueva aplicación utilizando CRUD. De hecho, FeathersJS es tan simple que nuestro resultado final ni siquiera tiene una interfaz de sitio web. A modo de ilustración, el lector deberá cortar y pegar algunas líneas de código javascript directamente en su consola para interactuar con la aplicación FeathersJS.

Además, este artículo ilustrará el uso de la interfaz de línea de comandos (CLI) de FeathersJS, incluso para facilitar aún más este proyecto.

REQUISITOS PREVIOS

– acceso de red a una base de datos que debería ser accesible así:

mysql: // myDbUserName: myDbPassWord@123.123.123.123: 3306 / myDbTable

Usé el siguiente SQL para crear la tabla y satisfacer los requisitos de columna de Sequelize:

CREAR TABLA testConnect
(nombre VARCHAR (30) NOT NULL
, dirección VARCHAR (30) NOT NULL
, createdAt DATETIME NOT NULL ## columna de secuenciación requerida
, actualizado en DATETIME NOT NULL ## columna de secuenciación requerida
, id TINYINT (3) UNSIGNED NOT NULL AUTO_INCREMENT ## columna de secuenciación requerida
, CLAVE PRINCIPAL (`id`)
);

Opcionalmente, puede simplemente permitir que Sequelize cree una tabla predeterminada para usted con las mismas columnas que las anteriores. La única diferencia será un nombre de columna de ‘texto’ en lugar de la columna de ‘nombre’ y ‘dirección’ como estoy demostrando, pero esta no es una situación realista. Además, seleccionar esta opción no es muy entretenido.

– un servidor, preferiblemente uno con acceso a la red. Se podría usar una computadora local, pero será más educativo usar una en una red

– un navegador Chrome o equivalente

– un sentido de curiosidad y aventura

CREACIÓN DE SERVIDOR

NOTA: es posible que se le solicite o no que utilice ‘sudo’ como prefijo para estos comandos iniciales, según su instalación.

Paso uno: (Paso opcional) Actualicemos su servidor.

sudo yum --assumeyes actualización; ## Opcional, pero suele ser una buena práctica

Paso dos: si una versión actual de Node.js (v8) aún no está instalada, hágalo ahora:

sudo curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -;
sudo yum install --assumeyes nodejs;
nodo --versión; npm --version; ## Es mejor asegurarse de que node y npm estén instalados correctamente

Paso tres: instale FeathersJS en su servidor:

sudo npm install --global @ feathersjs / cli; ## https://google.com/feathersjs/cli
qué plumas; ## mis plumas están instaladas en / usr / bin / feathers
plumas --versión; ## nuevamente opcional, pero generalmente es una buena idea

Bien, ahora nuestro entorno está completamente configurado para crear una aplicación FeathersJS real, que es nuestro siguiente paso. Todos los pasos restantes se realizarán tanto con su editor de texto favorito (que es Vim, por supuesto) como con la interfaz de línea de comandos (CLI) de FeathersJS.

Paso cuatro: cree una aplicación FeathersJS aceptando todos los valores predeterminados:

aplicación de generación de plumas; ## Normalmente acepto los valores predeterminados para todas las preguntas

¿Creería que ahora tenemos una aplicación que funciona? Opcionalmente, intente ejecutar los siguientes dos comandos:

prueba npm; ## Opcional
npm start; ## Opcional

Observe que se muestra la siguiente línea después de iniciar la aplicación:

información: la aplicación Feathers se inició en http: // localhost: 3030

Con suerte, se está ejecutando en una red para que podamos expandir la aplicación en lugar de usar solo “localhost”, que es aburrido. Con un editor de texto, edite el archivo ./config/default.json y reemplace la palabra “localhost” con el número de IP externo de su servidor. Si no está seguro de cuál es su número de IP, ingrese:

dirección ip;

para obtener su número de IP. Si está utilizando Google Cloud Platform, su número de IP externo está disponible en la página de configuración de la consola, o puede hacer esto:

dig + short myip.opendns.com @ resolver1.opendns.com. ; ## asumiendo que bind-utils está instalado

Ahora ingrese npm start; y abra Chrome y navegue hasta esa dirección IP en el puerto 3030, como http://123.123.123.123:3030.

Debería ver la página de bienvenida inicial predeterminada de FeathersJS:

Ahora comienza la verdadera diversión. Ahora es el momento de agregar un “servicio” de base de datos a nuestra sencilla aplicación.

Paso cinco: cree un servicio FeathersJS mediante los siguientes pasos:

las plumas generan servicio; ## se le solicitarán varias preguntas

Se harán las siguientes preguntas. De nuevo, elijo MariaDB

  1. Seleccione Sequelize (tres flechas hacia abajo)
  2. Ingresé ‘tiny-connect’ como el nombre del servicio
  3. ¿En qué ruta debe registrarse el servicio? (/ tiny-connect) aceptar predeterminado
  4. ¿A qué base de datos se está conectando? MariaDB (MySQL) [una flecha hacia arriba]
  5. ¿Cuál es la cadena de conexión de la base de datos? (use la cadena de base de datos de red de arriba)

Este es un buen momento para encontrar su archivo model.js y modificarlo para describir con qué tipo de tabla de base de datos desea interactuar. Tienes una opción bastante interesante aquí. Este paso se puede omitir y dejar que FeathersJS describa la tabla por usted, lo que significa una tabla de base de datos de dos columnas bastante aburrida con una columna “texto”. Sería mejor ingresar al archivo model.js, llamado ./src/models/SERVICENAME/model.js y agregar los nombres y tipos de columna apropiados. SERVICENAME será lo que haya especificado en el último paso de generación. En mi ejemplo, el nombre del archivo es tiny-connect.model.js.

Entonces, editemos manualmente ./src/models/tiny-connect.model.js y cambiemos lo siguiente:

reemplazar:

texto: {
    tipo: DataTypes.STRING,
    allowNull: falso
}

con:

nombre: {tipo: DataTypes.STRING, allowNull: false},
dirección: {tipo: DataTypes.STRING, allowNull: true},
}, {tableName: 'testConnect',

Observe que especifiqué el nombre de la tabla testConnect , en lugar de permitir que Sequelize nombre la tabla por mí.

 

Paso siete (opcional)

Siento que la retroalimentación es muy importante, especialmente la retroalimentación positiva después de que haya terminado de leer este artículo. Durante el desarrollo, digamos a Sequelize que nos dé todos sus comentarios, y no solo mensajes de error. Edite manualmente ./src/sequelize.js y cambie la línea:

registro: falso,

para:

registro: verdadero,

 

Paso ocho (opcional)

Busque en su archivo ./config/default.json y vuelva a verificar la conexión de la base de datos. Personalmente, me resulta muy útil conectarme manualmente a la base de datos utilizando la línea de comandos del sistema operativo, solo para asegurarme de que no haya problemas de contraseña, firewall, etc.

 

Paso nueve: Inicie la aplicación final:

npm start; ## iniciar la aplicación

Observe la línea de estado con su nuevo número de IP:

información: La aplicación Feathers se inició en http: //###.###.###.###: 3030

Navegue a esta página web y asegúrese de que se abra en la página de bienvenida predeterminada de FeathersJS:

Además, observe que Sequelize nos dio un buen mensaje de estado si especificamos que el registro sea verdadero:

Ejecutando (predeterminado): CREATE TABLE IF NOT EXISTS `testConnect`

(` id` INTEGER NOT NULL auto_increment, `name` VARCHAR (255) NOT NULL


,` address` VARCHAR (255), `createdAt` DATETIME NOT NULL


,` updatedAt` DATETIME NOT NULL


, PRIMARY KEY (`id`)


) ENGINE = InnoDB;


Ejecutando (predeterminado): MOSTRAR ÍNDICE DE `testConnect`

¿Creería que acabamos de crear una interfaz CRUD funcional? Esto probablemente tomó menos de cinco minutos, sin incluir la instalación del nodo y los pasos opcionales.

 

INTERFAZ CON EL SERVIDOR

“Espera, ¿dónde está el código para hablar con nuestro servidor?” me estás preguntando. Bueno, solo hay unas pocas líneas de código, por lo que a modo de ilustración, ingresemos manualmente el código usando copiar y pegar. Abra la consola de Chrome haciendo clic derecho e inspeccione en cualquier lugar de la página predeterminada de plumas, o muestre su destreza técnica ingresando CTRL-SHIFT-i .

Los pasos restantes simplemente se copiarán y pegarán en la consola.

Paso uno:  Cargue las bibliotecas de JavaScript necesarias:

['//cdnjs.cloudflare.com/ajax/libs/socket.io/2.0.4/socket.io.js'
, '//unpkg.com/@feathersjs/client@^3.0.0/dist/feathers.js'
] .forEach ((src) => {
    dejar script = document.createElement ('script'); script.src = src; script.async = falso;
    document.head.appendChild (secuencia de comandos);
});

SÍ, simplemente podríamos haber modificado el archivo index.html, pero seguir este procedimiento es más divertido.

Paso dos:  Cree nuestra aplicación del lado del cliente:

aplicación constante = plumas ();

Paso tres:  Crea nuestro socket:

const socket = io ();

Paso cuatro:  vincule nuestro nuevo socket a nuestra aplicación FeathersJS:

app.configure (plumas.socketio (enchufe));

Tenga en cuenta que FeathersJS simplemente requirió tres líneas completas de código jScript (y 88 pulsaciones de teclas) para conectarse con nuestro servidor FeathersJS (sin incluir los archivos de la biblioteca de secuencias de comandos).

Paso cinco: Ingresar a nuestra función de promesa de creación de fila.

FeathersJS depende en gran medida de las promesas (bienvenido a ES5-2018, por cierto).
Por lo tanto, necesitaremos una función que devuelva una promesa que cree un nuevo registro de base de datos para nosotros.

función asíncrona createTiny (nombre, dirección) {/ * crear (POST) * /
dejar createResult
      = aguardar app.service ('pequeña conexión'). crear ({nombre: nombre, dirección: dirección});
    console.log ('resultado de la función createTiny:' + JSON.stringify (createResult));
    return createResult;
};

Paso seis: ¡FINALMENTE! Veamos esto en acción.

De acuerdo, si ha perseverado a través de este largo y prolongado y agonizante procedimiento (con intención de sarcasmo), ahora es el momento de poner en acción estas pocas líneas de código:

createTiny ('Mark Edwards', '123 Swallow Lane'). luego ((valor) => {/ * crear (POST) * /
    console.log ('createTiny:' + JSON.stringify (valor));
});

Por increíble que parezca, acaba de usar una cantidad mínima de código javascript, todo ejecutado localmente, debo agregar, para insertar una nueva fila de base de datos en una red. Tenga en cuenta que gran parte del código es solo para satisfacer nuestra insaciable curiosidad. Se anima a los escépticos a volver al lugar donde se encuentra alojada su base de datos y, por supuesto, volver a comprobar los resultados. Es posible que los no escépticos también quieran hacerlo.

“Quiero más”, gritas. “Me prometiste CRUD completo”. Sí, lo entiendo completamente. Paciencia por favor. La primera parte solo cubre la “C” de CRUD (crear). El próximo artículo completará las siglas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.