У меня проблема с дублированием в 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();