1

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

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

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

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

最初我认为不会,因为拥有特定键的关键是两个相同的对象可能驻留在对象存储中,因此当仅提供对象本身时,浏览器不知道要给您什么对象。不过,大概由于我首先使用索引检索它,因此可能有某种方法可以利用索引来检索与我正在使用的对象相关联的外键。

4

2 回答 2

2

您必须保留放置时生成的离线密钥。它在成功请求事件结果中。

于 2015-06-02T01:05:38.710 回答
2

当数据插入数据存储时,返回的事件对象包含有关用于插入数据的键的信息。可以使用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);
};
于 2015-06-02T13:08:06.390 回答