Git Product home page Git Product logo

indexeddb's Introduction

IndexedDB

Open DB

const DB_NAME = "test"; // string
const DB_VERSION = 1; // unsigned long long
const request = window.indexedDB.open(DB_NAME, DB_VERSION);

request.onerror = () => {};
request.onsuccess = () => {};
request.onupgradeneeded = () => {};

onerror

request.onerror = () => {
  alert("You must allow the use of IndexedDB");
};

onsuccess

let DB;

request.onsuccess = () => {
  console.log("DB open success");
  DB = request.result;
};

onupgradeneeded

request.onupgradeneeded = (e) => {
  const DB = e.target.result;
  if (e.oldVersion < 1) {
    DB.createObjectStore("toon", { keyPath: "_id" });
  }
  if (e.oldVersion < 2) {
    DB.createObjectStore("person", {
      keyPath: "id",
      autoIncrement: true,
    });
  }
};

CRUD

Create

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readwrite");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const request = objectStore.add({ name: "cookie" });
  request.onsuccess = (e) => {
    console.log(e.target.result); // return key
  };
};

Read

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readonly");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const request = objectStore.get(1); // get by key
  request.onsuccess = (e) => {
    const result = e.target.result;
    console.log(result);
  };
};

Update

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readwrite");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const request = objectStore.get(1); //get by key
  request.onsuccess = (e) => {
    const result = e.target.result;
    result.name = "poky";

    const updateReq = objectStore.put(result);
    updateReq.onsuccess = (e) => {
      const result = e.target.result;
      console.log(result);
    };
  };
};

Delete

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readwrite");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const request = objectStore.delete(1); // delete by key
  request.onsuccess = (e) => {
    const result = e.target.result;
    console.log(result);
  };
};

Cursor

Get all

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readonly");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const request = objectStore.openCursor();
  request.onsuccess = (e) => {
    const cursor = e.target.result;
    if (cursor) {
      console.log(`key: ${cursor.key}, name: ${cursor.value.name}`);
      cursor.continue();
    } else {
      console.log("cursor end");
    }
  };
};

Index

Create Index

objectStore.createIndex("indexName", "keyPath", "indexOptionObject");
request.onupgradeneeded = (e) => {
  console.log("onupgradeneeded");
  const DB = e.target.result;

  if (e.oldVersion < 2) {
    const objectStore = DB.createObjectStore("person", {
      keyPath: "id",
      autoIncrement: true,
    });
    objectStore.createIndex("personNameIndex", "name", { unique: false });
  }
};

Read by Index

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readonly");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const index = objectStore.index("personNameIndex");
  const request = index.get(getInput.value); // get by index (person.name)
  request.onsuccess = (e) => {
    const result = e.target.result;
    console.log(result);
  };
};

Delete by Index

request.onsuccess = () => {
  const DB = request.result;
  const transaction = DB.transaction(["person"], "readwrite");

  transaction.onerror = (e) => {
    console.log("transaction error");
  };
  transaction.oncomplete = () => {
    console.log("transaction complete");
  };

  const objectStore = transaction.objectStore("person");
  const index = objectStore.index("personNameIndex");
  const idRequest = index.get(deleteInput.value); // first get request by index
  idRequest.onsuccess = (e) => {
    // delete data using the id, found in index
    const request = objectStore.delete(e.target.result.id);
    request.onsuccess = (e) => {
      const result = e.target.result;
      console.log(result);
    };
  };
};

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.