2 回答

TA貢獻1850條經驗 獲得超11個贊
您需要添加一個鍵作為第二個參數,例如objectStore.put(data, key)
。
鑰匙
您要更新的記錄的主鍵(例如來自IDBCursor.primaryKey)。僅當對象存儲具有主鍵時才需要這樣做
autoIncrement
,因此該鍵不在記錄對象的字段中。在這種情況下,調用put(item)
總是會插入一條新記錄,因為它不知道您可能想要修改哪些現有記錄。--?IDBObjectStore.put() - Web API | | -- IDBObjectStore.put() - Web API |?MDN

TA貢獻1804條經驗 獲得超3個贊
我找到了另一個解決方案cursor.update():
let updateItem = (key, newData) => {
let objectStore = db.transaction("items","readwrite").objectStore("items");
objectStore.openCursor().onsuccess = (e) => {
let cursor = e.target.result;
if (cursor && cursor.key == key) {
cursor.update(Object.assign(cursor.value, newData));
cursor.continue();
}
};
}
添加回答
舉報