Tips, Soluciones y Novedades en Tecnología

04/06/2023

Migración Excel a FireStore


 

Una forma de gestionar los datos de forma práctica en el Firebase es haciendo uso de FireStore, pero a diferencia de RealTime Database, no tiene opciones para importar o exportar, esas operaciones deben realizarse desde otras herramientas.


Justamente por ello vamos hacer una implementación que nos permita sincronizar nuestros registros, pero forma mas familiar haciendo uso de un archivo Excel.


El proceso de reduce a modificar el archivo Excel (agregar, actualizar o quitar) y automaticamente nuestra base de datos en Firebase FireStore se sincronizará en función a los datos que dispone nuestro archivo.

Para ellos haremos uso de GitLab-CI, datos que nos facilita la integración continua y despliegue continua a cualquier ambiente destino. 


Para ello debemos ejecutar los siguientes pasos:

1. Configuración web del proyecto en Firebase

Configuramos Firebase para proyectos web.


Le asignamos un nombre al proyecto


Copiamos la configuración y pegamos en el archivo "config/config.js"



2. Cuentas de servicio en Firebase

Nos movemos a cuentas de servicio del proyecto y seleccionamos NODE.


Posteriormente hacemos click en generar nuestra clave privada y nos descargará un archivo .json, renombramos al archivo y colocamos en la carpeta "config/serviceAccount.json" del proyecto.


3. Desarrollo

Creamos 2 archivos "readExcel.js" y "import.js" en la carpeta "main" con el siguiente contenido.

readExcel.js

var fs = require('fs');
const xlsxFile = require('read-excel-file/node');

xlsxFile('./DATABASE.xlsx', { sheet: 'PERSONAS' }).then((rows) => {
const header = rows[0];
var data=[];
for (let index = 1; index < rows.length; index++) {
var item={};
const element = rows[index];
for (cel in element) {
if(element[cel]!=null){
item[header[cel]]=element[cel];
}
}
data.push(item);
}
fs.writeFile('./data/personas.json', JSON.stringify({"personas":data}), 'utf8',callback);
})

function callback(){
console.log("operation end");
}

 import.js

// Imports
const firestoreService = require('firestore-export-import');
const firebaseConfig = require('../config/config');
const serviceAccount = require('../config/serviceAccount.json');

// JSON To Firestore
const jsonToFirestore = async () => {
try {
console.log('Initialzing Firebase');
await firestoreService.initializeApp(serviceAccount, firebaseConfig.databaseURL);
console.log('Firebase Initialized');

await firestoreService.restore('./data/personas.json');
console.log('Upload Success');
}
catch (error) {
console.log(error);
}
};

jsonToFirestore();

4. Ejecución

Para instalar las dependencias, ejecutar "npm install" en el proyecto y tendremos listo para comenzar con la ejecución.

nos movemos al proyecto y ejecutamos  "node main/readExcel.js" y posteriormente "node main/import.js".

Una vez ejecutado se podrá ver la siguiente salida.



Si nos vamos a Cloud FireStore podemos ver.



De esa forma nos olvidamos de estar actualizando manualmente nuestros datos en firestore.

5. Automatización

Al actualizar su repositorio con las credenciales y hacer commit, se ejecutará el job que se encargado de generar el archivo JSON y desplegar el Firestore.




La fuente del proyecto lo pueden descargar en GitLab



0 comments:

Publicar un comentario