如何更改 IndexedDB 索引中对象的值?
How do I change an object's value in an IndexedDB index?
是否可以在不克隆、删除或放置新条目的情况下更新 IndexedDB 索引中的对象值?理论上,类似于以下代码片段的内容可以解决问题,但在 put
得到确认之前它可能不会 delete
。但这对我来说似乎有点矫枉过正。看起来对它进行任何错误处理都是一场噩梦。
const objectStore = db.transaction([objectStoreName], 'readwrite')
.objectStore(objectStoreName);
const requestGet = objectStore.get(index);
requestGet.onsuccess = (event: any) => {
const value = event.target.result.value // Store old value
const requestDelete = objectStore.delete(index);
requestDelete.onsuccess = (event: any) => {
const requestPut = objectStore
.put({index: 'New Index Value', value: value}); // Put back using new index
};
};
您不能直接更改对象存储索引中的值。您可以更改对象存储中对象的值,IndexedDB 会将您的更改传播到相关索引。索引本质上是只读的。
是否可以在不克隆、删除或放置新条目的情况下更新 IndexedDB 索引中的对象值?理论上,类似于以下代码片段的内容可以解决问题,但在 put
得到确认之前它可能不会 delete
。但这对我来说似乎有点矫枉过正。看起来对它进行任何错误处理都是一场噩梦。
const objectStore = db.transaction([objectStoreName], 'readwrite')
.objectStore(objectStoreName);
const requestGet = objectStore.get(index);
requestGet.onsuccess = (event: any) => {
const value = event.target.result.value // Store old value
const requestDelete = objectStore.delete(index);
requestDelete.onsuccess = (event: any) => {
const requestPut = objectStore
.put({index: 'New Index Value', value: value}); // Put back using new index
};
};
您不能直接更改对象存储索引中的值。您可以更改对象存储中对象的值,IndexedDB 会将您的更改传播到相关索引。索引本质上是只读的。