//Abre y crea la base de datos
const request = indexedDB.open("ContactosDB", 1);
// Configurar la estructura de la base de datos
request.onupgradeneeded = function(event) {
db = event.target.result;
const objectStore = db.createObjectStore("contactos", { keyPath: "id", autoIncrement: true });
objectStore.createIndex("nombre", "nombre", { unique: false });
objectStore.createIndex("email", "email", { unique: true });
console.log("Base de datos configurada correctamente");
};
// Cuando la base de datos se abre con éxito
request.onsuccess = function(event) {
db = event.target.result;
console.log("Base de datos abierta con éxito");
};
// Función para agregar un contacto
function addContact() {
const contacto = {
nombre: "Juan Pérez",
email: "juan" + Math.random() + "@ejemplo.com"
};
const transaction = db.transaction(["contactos"], "readwrite");
const objectStore = transaction.objectStore("contactos");
const request = objectStore.add(contacto);
request.onsuccess = function(event) {
console.log("Contacto agregado con ID:", event.target.result);
};
request.onerror = function(event) {
console.error("Error al agregar contacto:", event.target.errorCode);
};
}
// Función para recuperar y mostrar todos los contactos
function getContacts() {
const contactList = document.getElementById("contactList");
contactList.innerHTML = "; // Limpiar la lista
const transaction = db.transaction(["contactos"], "readonly");
const objectStore = transaction.objectStore("contactos");
const request = objectStore.getAll();
request.onsuccess = function(event) {
const contactos = event.target.result;
contactos.forEach(contacto => {
const li = document.createElement("li");
li.textContent = `ID: ${contacto.id}, Nombre: ${contacto.nombre}, Email: ${contacto.email}`;
contactList.appendChild(li);
});
};
request.onerror = function(event) {
console.error("Error al recuperar contactos:", event.target.errorCode);
};
}
// Función para eliminar un contacto (por ejemplo, el primero)
function deleteContact() {
const transaction = db.transaction(["contactos"], "readwrite");
const objectStore = transaction.objectStore("contactos");
const request = objectStore.delete(1); // Elimina el contacto con ID 1
request.onsuccess = function(event) {
console.log("Contacto eliminado con éxito");
getContacts(); // Actualizar la lista
};
request.onerror = function(event) {
console.error("Error al eliminar contacto:", event.target.errorCode);
};
}
Explicación del código: