Home
Head's Up: I'm in the middle of upgrading my site. Most things are in place, but there are something missing and/or broken including image alt text. Please bear with me while I'm getting things fixed.

Basic IndexedDB Example

See the console for messages

JavaScript

let db 

const addData = () => {
  const transaction = db.transaction(["keys"], "readwrite")
  const objectStore = transaction.objectStore("keys")
  const request = objectStore.add(
    {
      alfa_key: alfa_key.value,
      bravo_key: bravo_key.value
    }
  )

  request.onsuccess = (event) => {
    console.log("TODO: See if this is necessary or if you can just let the transaction close")
  }

  request.onerror = (event) => {
    console.error(event.target.error)
  }

  transaction.oncomplete = (event) => {
    console.log("All done!")
  }

  transaction.onerrer = (event) => {
    console.log(event.target)
  }
}

const startDB = () => {
  const request = indexedDB.open("ExampleKeysDB2", 8)

  request.onsuccess = (event) => {
    console.log("Connected to db")
    db = event.target.result
    showButton()
  }

  request.onerror = (event) => {
    console.error("Could not connect to IndexedDB")
  }

  request.onupgradeneeded = (event) => {
    console.log("Updated database")
    db = event.target.result
    const objectStore = db.createObjectStore("keys", { keyPath: "alfa_key" });
    objectStore.createIndex("bravo_key", "bravo_key", { unique: true })
    objectStore.transaction.oncomplete = (event) => {
      showButton()
    }
  }
}

const showButton = () => {
  const newButton = document.createElement("button")
  newButton.innerText = "Add Data"
  buttonHolder.appendChild(newButton)
  newButton.addEventListener("click", () => addData())
}

document.addEventListener("DOMContentLoaded", () => {
  startDB()
})