gpt4 book ai didi

javascript - 如何在已存在的 indexedDB 中的已存在的 objectStore 中添加 `put` 新值?

转载 作者:行者123 更新时间:2023-11-29 18:39:50 24 4
gpt4 key购买 nike

我正在努力更新 indexedDBobjectStore 中的一系列四个条目。

这就是我想要实现的(伪代码):

let myDatabase = indexedDB('myDatabase', 1);
let myObjectStore = myDatabase.myObjectStore;
myObjectStore.entry1 = 'newValue1';
myObjectStore.entry2 = 'newValue2';
myObjectStore.entry3 = 'newValue3';
myObjectStore.entry4 = 'newValue4';

当然,事情并不是那么简单。

我明白我需要使用put。但是,尽管尝试了许多方法,但我无法做到更进一步。

已经在首次创建 indexedDB 时成功设置并填充了 objectStore:

// SET UP VALUES OBJECT

let valuesObject = {

entry1 : 'a',
entry2 : 'b',
entry3 : 'c',
entry4 : 'd'
};


// SET UP INDEXED DATABASE

const setUpIndexedDatabase = (valuesObject) => {

let database
const databaseVersion = 1;
const databaseName = \'myDatabase\';
const databaseOpenRequest = indexedDB.open(databaseName, databaseVersion);

databaseOpenRequest.onupgradeneeded = () => {

database = databaseOpenRequest.result;

let myObjectStore = database.createObjectStore('myObjectStore');

myObjectStore.transaction.oncomplete = () => {

let objectStoreValues = database.transaction('Values', 'readwrite').objectStore('Values');

const valuesEntries = Object.entries(valuesObject);

for (let i = 0; i < valuesEntries.length; i++) {

objectStoreValues.add(valuesEntries[i][1], valuesEntries[i][0]);
}
}
}


databaseOpenRequest.onsuccess = () => {

database = databaseOpenRequest.result;

// >>> THIS IS THE BIT THAT I NEED TO WRITE <<<

database.close();
}
}

setUpIndexedDatabase(valuesObject);

到目前为止,还不错。如果尚不存在数据库,上面的代码会触发 onupgradeneeded 事件,这会创建 myObjectStore 并用四个键值对填充它。

但是如果数据库确实存在并且已经包含 myObjectStore,那么我使用 put 编写的代码的每个变体都无法更新键的值并返回各种错误- 通常完全没有错误。

我只想更新数据库中的值。

我认为问题在于,当数据库版本保持不变且 onupgradeneeded 未触发时,我不知道如何正确使用 put

最佳答案

如果您想更新数据库中已经存在的值,可以使用以下代码(例如,我正在更新 entry1 条目):

databaseOpenRequest.onsuccess = function(event) {
db = event.target.result;

const objectStore = db.transaction('myObjectStore', 'readwrite').objectStore('myObjectStore');
const request = objectStore.put('e', 'entry1');
request.onerror = function(event) {
// There was an error while updating.
};
request.onsuccess = function(event) {
// The update was successful.
};
}

关于javascript - 如何在已存在的 indexedDB 中的已存在的 objectStore 中添加 `put` 新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993019/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com