2 回答

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

TA貢獻(xiàn)1804條經(jīng)驗 獲得超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();
}
};
}
添加回答
舉報