IndexedDB API

IndexedDB is a low-level, asynchronous, NoSQL database in the browser for storing large amounts of structured data. It allows you to persistently store and query key-value pairs, objects, or files.


Features

  • Stores structured data, including objects and blobs.
  • Works asynchronously for non-blocking operations.
  • Supports transactions for data consistency.


Example: Basic CRUD Operations

// Open the database
let request = indexedDB.open("MyDatabase", 1);

request.onupgradeneeded = function (event) {
  let db = event.target.result;

  // Create an object store
  if (!db.objectStoreNames.contains("users")) {
    db.createObjectStore("users", { keyPath: "id" });
  }
};

request.onsuccess = function (event) {
  let db = event.target.result;

  // Add data
  let transaction = db.transaction("users", "readwrite");
  let store = transaction.objectStore("users");
  store.add({ id: 1, name: "Alice", age: 25 });

  // Read data
  let getRequest = store.get(1);
  getRequest.onsuccess = function () {
    console.log(getRequest.result); // { id: 1, name: "Alice", age: 25 }
  };

  // Update data
  store.put({ id: 1, name: "Alice Updated", age: 26 });

  // Delete data
  store.delete(1);
};