如果未定义,则将值存储到 indexedDB

Storing value to indexedDB if it is not defined

我正在尝试检查服务工作者在索引数据库中是否有 'uid' 的记录。如果没有定义,我需要给它加一个值。

这是我的代码,我已经尝试过在其他问题和网站上找到的一些方法,但 none 有效。

function checkUid() {
  console.log('checking uid...');
  var request =  indexedDB.open('db',1);


  request.onsuccess = function(event) {
    var db = event.target.result;
    var store = db.createObjectStore('Users', {keyPath:"users"});
    var transaction = event.target.transaction;

   db.transaction( '' ).objectStore( '' ).get( 'uid' ).onsuccess = 
    function(uid)
    {
        if (uid) {
          console.log('uid found!');
          console.log(uid);
          console.log('uid end');

        } else {
          console.log('not found!');
          db.transaction( '' ).objectStore( '' ).set( 'uid', 'aaaaa' );
          console.log('uid end');
        }
    }

}

我该怎么做?

此代码打开名为 example 的数据库,如果需要创建名为 users 的对象存储,从该存储中获取具有键 x123 的对象,并创建对象(如果尚不存在)。

function checkUid() {
  let openRequest = indexedDB.open("example")
  openRequest.onupgradeneeded = () => {
    console.log("update needed")
    openRequest.result.createObjectStore("users")
  }
  openRequest.onsuccess = () => {
    console.log("opened database")
    let store = openRequest.result.transaction("users", "readwrite").objectStore("users")
    let uid = "x123"
    let getRequest = store.get(uid)
    getRequest.onsuccess = () => {
      let result = getRequest.result
      if (result) {
        console.log("found:", result)
      } else {
        console.log("not found")
        store.add("aaaaa", uid)
      }
    }
  }
}

使用 put() 而不是 set(),它将更新条目,如果条目不存在则创建一个。

https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore/put