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.
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.
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