Двойственность файла данных IndexedDB при обновлении записей - PullRequest
0 голосов
/ 10 января 2019

У меня проблема с дублированием в IndexedDB файле данных в Chrome.

"AppData / Local / Google / Chrome / Userdata / Default / IndexedDB / сайт / 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();
...