Javascript 仅更新IndexedDB中对象的某些字段

Javascript 仅更新IndexedDB中对象的某些字段,javascript,indexeddb,Javascript,Indexeddb,例如: object1(1)={ 姓名:“罗多克中士”, 特色:“肉搏战” } 然后我只想将专业字段更新为: object1(1)={ 姓名:“罗多克中士”, 特长:“远程作战” } 谢谢。 不能进行部分更新,只能覆盖整个对象 从内存中读取对象,对其进行更改,然后将其写回 这可以通过以下步骤实现- 首先使用idbcursor获取项目 更新该项目 调用cursor.update将更新的数据存储在indexedb中 一个示例代码是—— const transaction = db.transacti

例如:

object1(1)={
姓名:“罗多克中士”,
特色:“肉搏战”
}

然后我只想将专业字段更新为:

object1(1)={
姓名:“罗多克中士”,
特长:“远程作战”
}

谢谢。

  • 不能进行部分更新,只能覆盖整个对象
  • 从内存中读取对象,对其进行更改,然后将其写回

这可以通过以下步骤实现-

  • 首先使用idbcursor获取项目
  • 更新该项目
  • 调用
    cursor.update
    将更新的数据存储在indexedb中
  • 一个示例代码是——

    const transaction = db.transaction(['rushAlbumList'], 'readwrite');
    const objectStore = transaction.objectStore('rushAlbumList');
    
    objectStore.openCursor().onsuccess = function(event) {
        const cursor = event.target.result;
        if (cursor) {
            if (cursor.value.albumTitle === 'A farewell to kings') {
                const updateData = cursor.value;
    
                updateData.year = 2050;
                const request = cursor.update(updateData);
                request.onsuccess = function() {
                    console.log('data updated');
                };
            };
            cursor.continue();
        }
    };
    
    查看此链接了解更多信息-


    注意:-在上面的代码中,我循环遍历所有记录,如果您想根据某些条件获取特定记录,这是不有效的。因此,您可以使用idbKeyRange或其他idb查询选项进行此操作。

    在决定更新单个对象时,这可能会访问集合中的每个对象?是的,我想展示如何更新特定值。只是在我的回答中加了一个注释。