1

我有一个使用 JavaScript 和 IndexedDB 的 Web 应用程序,我用它来存储 blob/uint(在 Chrome 中),使用索引键(唯一),我可以通过实现轻松更新 blob:

var blob1=this.request.result; //the blob file(e.g. image)
var blob2=null;
var FileStorage = [
  { id: "10012", filedata:blob1 },
  { id: "10013", filedata:blob2 }
];
var objectStore = transaction.objectStore("storage");
for (var i in FileStorage) {
  var request = objectStore.put(FileStorage[1]);
  request.onsuccess = function(event) {
    console.log("success");
  };
}

我实现了 .put(),而不是 .add() 来更新记录,在这种情况下,我更新了 id 为 10013 的文件数据,

但是现在,我面临重命名现有记录的 id 的问题,例如,我想将第一条记录(id 10012)更改为 id:10019 而不更改/修改文件数据,但我很难了解如何。同样,id 是唯一的

4

2 回答 2

1

Indexeddb 是一个没有部分更新的简单文档存储。您阅读完整的对象,更新它并将它们完整地写回。如果更新这样的元数据频繁,也许元数据可以单独存储。

于 2013-08-10T11:12:06.297 回答
1

从技术上讲,您无法更改现有记录的 ID 值,但如果您读取该记录,将其删除,然后使用所需的 ID 重新写入,则结果与更改 ID 相同。

于 2014-01-28T03:53:43.393 回答