Reporte Base de Datos en La Nube
Reporte Base de Datos en La Nube
Reporte Base de Datos en La Nube
Ingeniería en Sistemas
Computacionales
Reporte Base de Datos en la Nube
• Alumno:
• José Eduardo Ortega García. #19100229
Docente: Ing. Carlos Arturo Guerrero Crespo.
Como podemos notar escribimos de titulo de tarea “Ejemplo de prueba ” y en
descripcion : “esta es una prueba” al dar clic en guardar en la consola de
desarrolladores al inspeccionar no marca ningún error, esto nos indica que
podemos revisar nuestra base de datos de FIRESTORE para comprobar si
efectivamente se recibió la información.
Esta es una captura de la base de datos con la colección tareas que recibió la
prueba de la conexión entre el formulario y la aplicación, ahora continuaremos con
las demás opciones del CRUD para su inserción, modificación, búsqueda y
eliminación.
Para realizar una consulta sobre todos los documentos que se encuentren en la
base de datos, necesitamos agregar una librería llamada getDocs, esta librería
ayuda a obtener los documentos en tiempo real de la base de datos, trabajando
desde una función asíncrona.
Ahora bien, si la función esta trabajando correctamente, debería mostrar algo asi en la consola del servidor donde lo
estamos ejecutando.
Como se puede notar la consulta QuerySnapshot esta trayendo consigo un registro, que en este caso fue el agregado
como prueba en la inserción anterior.
Ahora que la aplicación ya esta recibiendo las consultas de la base de datos, debemos agregar una nueva función
llamada onSnapshot, esta función se encargara de realizar todos los cambios que esten ocurriendo recientes en la base
de datos, asi no se tendría que refrescar la pagina cada que ocurra un cambio.
Para poder utilizar una función para eliminar se necesita importar la librería deleteDocs y doc, esto sirve para indicar a
través de firebase reciba el ID del objeto en cuestión para poder ser eliminado.
Aquí se exporta una variable o función que recibe el ID y pasa por el método de borrado que recibe, la librería de doc, lee
la base de datos, entra a la colección y recibe el ID que será borrado con cada botón.
Para el botón de modificar se toma como referencia el botón de eliminar, pues únicamente se necesita el ID para localizar
el documento a modificar.
Pero ahora exportamos la librería getDoc, similar a getDocs pero con la diferencia que obtiene un solo documento y no
toda la colección como en los demás casos.
También cabe mencionar que para hacer validos los cambios en el programa y en la base de datos se debe implementar
la librería updateDocs, que básicamente permite utilizar una función con propiedades extras para reflejar los cambios en
caso de ser necesario.
Aquí se crea un método que lee los campos y el id del documentos y permite actualizarlos a excepción del ID.
El botón editar permite obtener los valores de la base de datos, tomando su id de forma automática, los envia al
formulario y los plasma en sus cajas de texto, la variable auxiliar Modificar se activa y la variable auxiliar id recibe el ID del
documento, ahora el botón AGREGAR pasa a ser ACTUALIZAR y al dar clic se activa el evento para la inserción.
If para validar si la variable Modificar esta inactiva pasa únicamente a guardar, de ser contrario permite editar los campos.
Despues de asegurar las operaciones principales del CRUD, bajo las observaciones del profesor se decidio por mejorar
un resultado de búsqueda, puede ser por ID, TITULO, DESCRIPCION, todo esto puede realizar una búsqueda en
especifico o solo con palabras que tengan en común, por ejemplo:
Como se puede ver en el textfield de búsqueda obtuvo la tarea con el titulo especifico, pero que pasa si solo agregamos
la palabra “Tarea”:
Nos trajo de vuelta todos los resultados que coincidían con la palabra tarea, incluso el que buscamos específicamente
con anterioridad.
Estos son los métodos que se necesitan para validar la búsqueda de forma especifica y de forma “General”.
Una vez realizado cada uno de las opciones del crud, se le asigna un formato de diseño personal.
CODIGO DE LAS PAGINAS DEL PROYECTO:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet"
href="https://bootswatch.com/5/quartz/bootstrap.min.css">
<div class="col-md-6">
<div class="card">
<div class="card-body">
<br>
<label for="search-type">Tipo de búsqueda:</label>
<select id="search-type">
<option value="ide">ID</option> <option
value="title">Título</option> <option
value="description">Descripción</option> </select>
<br>
<input type="text" id="search-value"class="form-control mb-2"
placeholder="B U S C A R" >
</Form>
<br><br>
<div>
<button class="btn btn-primary" id="btn-reset"> R E S E T E A R</button>
<button class="btn btn-primary" id="search-button">B U S C A R</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal" id="modalAlerta" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">INFORMACION</h5>
<button type="button" class="close" data-dismiss="modal" aria-
label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>GUARDADO CON EXITO.</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-
dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
// Resetear el formulario
taskForm.reset();
if(!Modificar)
{
saveTask(idn.value, title.value, description.value);
alert('INSERTADO CON EXITO')
}
else{
console.log(description.value);
console.log(title.value);
updateTask(idh,{title: title.value, description:description.value})
Modificar = false
alert('ACTUALIZADO CON EXITO');
}
taskForm.reset()
})
tasksContainer.innerHTML += `
<div class="card card-body mt-2 border-primary">
<h1 class ="h4"> ${Busqueda.ide}</h1>
<h2 class="h5">${Busqueda.title}</h2>
<p>${Busqueda.description}</p>
<div>
<button class='btn btn-primary btn-borrar' data-id="${Busqueda.id}">B O R
R A R </button>
<button class='btn btn-secondary btn-editar' data-id="${Busqueda.id}"> E D
I T A R </button>
</div>
</div>
`;
const btnBorrar = tasksContainer.querySelectorAll('.btn-borrar')
btnBorrar.forEach(btn => {
btn.addEventListener('click',({target: {dataset}})=>{
deleteTask(dataset.id)
alert('ELIMINADO CON EXITO');
})
})
taskForm['task-title'].value= task.title
taskForm['task-ide'].value = task.ide
taskForm['task-description'].value= task.description
Modificar=true;
idh= e.target.dataset.id;
taskForm['btn-save-task'].innerText = 'A C T U A L I Z A R'
})
})
})
}
// renderizar resultados
console.log(searchField)
})
// Import the functions you need from the SDKs you need
import { initializeApp } from
"https://www.gstatic.com/firebasejs/10.4.0/firebase-app.js";
import { getFirestore, collection, addDoc, getDocs, onSnapshot, deleteDoc,
doc, getDoc, updateDoc,query ,where, startAt, endAt,orderBy} from
"https://www.gstatic.com/firebasejs/10.4.0/firebase-firestore.js"
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries
// Initialize Firebase
const app = initializeApp(firebaseConfig);
const db = getFirestore()
console.log(q)
console.log(q)