I can’t update any data in IndexedDb. When I run the code it says “store.put is not a function at store.onsuccess”.
- I tried from many browsers, same error in all
- I also tried .update instead of .put function but it didn’t work and gave the same error
const request = window.indexedDB.open("AdminDatabase"); request.onsuccess = (event) => { const db = event.target.result; const txn = db.transaction('floors', 'readwrite'); const store = txn.objectStore('floors').get(parseInt(getRoomButtonNumber)); store.onsuccess = function (event) { var floorDataFromDb = event.target.result; console.log("RenameFloor: getDbResult: FloorName: " + floorIdFromDb.Name); floorDataFromDb.Name = person; console.log("RenameFloor: Json New Name: " + floorDataFromDb.Name); //In this line caught error store.put(floorDataFromDb); store.onsuccess = function (event) { console.log("floorData Updated: " + event.target.result); } }; store.onerror = function (event) { console.log("GET Error DB: " + event); }; };
Advertisement
Answer
You issue is on this line:
const store = txn.objectStore('floors').get(parseInt(getRoomButtonNumber));
You define store as an IDBRequest
.
Obviously, this does not have a put method. You would instead change it to this:
const store = txn.objectStore('floors'); const res = store.get(parseInt(getRoomButtonNumber)); res.onsuccess = evt => { ... store.put(data, key); ... } res.onerror = evt => { ... }