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();
}
};
}
添加回答
举报