JSFiddle - React, Tailwind, and code Playground

by Pankaj Kargirwar

JavaScript

//promisify

function openDb_ref(name, ver) {
  console.log("openDb ...");
  var req = indexedDB.open(name, ver);
  req.onsuccess = function(evt) {
    // Equal to: db = req.result;
    db = this.result;
    console.log("openDb DONE");
  };
  req.onerror = function(evt) {
    console.error("openDb:", evt.target.errorCode);
  };

  req.onupgradeneeded = function(evt) {
    console.log("openDb.onupgradeneeded");
    var store = evt.currentTarget.result.createObjectStore(
      DB_STORE_NAME, {
        keyPath: 'id',
        autoIncrement: true
      });

    store.createIndex('biblioid', 'biblioid', {
      unique: true
    });
    store.createIndex('title', 'title', {
      unique: false
    });
    store.createIndex('year', 'year', {
      unique: false
    });
  };
}

async function openDb(name, storeName, ver) {
  return new Promise((resolve, reject) => {
    var req = indexedDB.open(name, ver);
    req.onupgradeneeded = (evt) => {
      console.log("openDb.onupgradeneeded");
      var store = evt.currentTarget.result.createObjectStore(
        storeName, {
          keyPath: 'id',
          autoIncrement: true
        });

      store.createIndex('biblioid', 'biblioid', {
        unique: true
      });
      store.createIndex('title', 'title', {
        unique: false
      });
      store.createIndex('year', 'year', {
        unique: false
      });
    };

    req.onsuccess = (evt) => {
      // Equal to: db = req.result;
      resolve(req.result)
    };

    req.onerror = (evt) => {
      reject(evt.target.errorCode);
    };

  })
}

main()

async function main() {
  try {
    let db = await openDb("db", "store", 1)
    console.log("db opened")
    var tx = db.transaction("store", "readwrite");
    let store = tx.objectStore("store")
    
  } catch (e) {
    console.log(e)
  }
}