IndexedDB:检索与对象存储中特定对象关联的行外键

IndexedDB: retrieve the out-of-line key associated with a particular object in an object store

本文关键字:对象 关联 检索 存储 IndexedDB      更新时间:2023-09-26

假设我有一个对象存储,它是这样创建的:

IDBDatabase.createObjectStore (Name, {autoIncrement: true });

现在,假设我使用index从对象存储中检索一个对象来查找它。

是否有一种方法,我可以检索与对象相关联的行外键,以便我可以修改/删除它与IDBObjectstore.put()/IDBObjectstore.delete(),或者我卡住迭代对象存储与游标(基于一些任意属性比较)和使用cursor.update()/cursor.delete() ?

最初我认为不是,因为有特定的键的要点是两个相同的对象可能驻留在对象存储中,所以当浏览器只提供对象本身时,它无法知道要给你什么对象。但是,由于我首先使用索引检索了它,因此可能有某种方法可以利用索引检索与我正在处理的对象关联的行外键。

当数据插入到数据存储中时,返回的事件对象包含用于插入数据的键的信息。它可以使用event.target.result进行检索。

无论是行内键还是行外键,您都可以通过相同的方式获得。

var transaction = DB_HANDLER.transaction([tableName], "readwrite");
var objectStore = transaction.objectStore(tableName);
var request = objectStore.add(data);
request.onsuccess = function(event) {
    console.log("Key used for inserting data = " + event.target.result);
};

您必须保持在放置时生成的行外键。