更新记录时IndexedDB数据文件重复

时间:2019-01-10 16:38:25

标签: indexeddb

我在Chrome的 IndexedDB 数据文件中存在重复性问题。

  

“ AppData /本地/ Google / Chrome / Userdata /默认/IndexedDB/site/000003.log”。

我只能在数据库中看到一次记录,但是如果我在数据文件中搜索记录,则发现它与更新记录一样多。我在做什么错了?

这是示例代码:

var firstLoad = false,
    db = null;

openDb = () => {
  return new Promise((resolve) => {
    let req = window.indexedDB.open("testDB", 1);

    req.onsuccess = (e) => {
      db = e.target.result;
      resolve();
    };

    req.onupgradeneeded = (e) => {
      firstLoad = true;
      db = e.target.result;
      db.createObjectStore("testStore", { keyPath: "id", autoIncrement: true });
    };
  });
};

insertRecord = (record) => {
  return new Promise((resolve) => {
    let tx = db.transaction(["testStore"], "readwrite"),
        store = tx.objectStore("testStore");

    tx.oncomplete = () => {
      resolve();
    };
    store.add(record);
  });
};

updateRecord = () => {
  return new Promise((resolve) => {
    let tx = db.transaction(["testStore"], "readwrite"),
        store = tx.objectStore("testStore"),
        req = store.get(1);

    tx.oncomplete = () => {
      resolve();
    };

    req.onsuccess = (e) => {
      store.put(e.target.result);
    }
  });
};

testIt = async () => {
  await openDb();
  if (firstLoad)
    await insertRecord({id:1,name:"record"});
  updateRecord();
};

testIt();

0 个答案:

没有答案