IndexedDB:检索与对象存储中特定对象关联的外键
IndexedDB: retrieve the out-of-line key associated with a particular object in an object store
假设我有一个对象存储,它是这样创建的:
IDBDatabase.createObjectStore
(Name, {autoIncrement: true });
现在,假设我使用 index
从那个对象存储中检索一个对象来查找它。
有没有一种方法可以检索与对象关联的外联密钥,以便我可以 modify/delete 使用 IDBObjectstore.put()
/ IDBObjectstore.delete()
, or am I stuck iterating over the object store with a cursor (comparing based on some arbitrary property) and using cursor.update()
/ cursor.delete()
?
最初我认为不会,因为具有特定键的意义在于两个相同的对象可能驻留在对象存储中,因此浏览器在仅提供对象本身时无法知道给您什么对象.不过大概是因为我首先使用索引检索它,所以可能有一些方法可以利用索引来检索与我正在使用的对象相关联的外键。
您必须保留放置时生成的外线密钥。它在成功请求事件结果中。
当数据被插入数据存储时,返回的 event 对象包含有关用于插入数据的键的信息。可以使用 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);
};
假设我有一个对象存储,它是这样创建的:
IDBDatabase.createObjectStore
(Name, {autoIncrement: true });
现在,假设我使用 index
从那个对象存储中检索一个对象来查找它。
有没有一种方法可以检索与对象关联的外联密钥,以便我可以 modify/delete 使用 IDBObjectstore.put()
/ IDBObjectstore.delete()
, or am I stuck iterating over the object store with a cursor (comparing based on some arbitrary property) and using cursor.update()
/ cursor.delete()
?
最初我认为不会,因为具有特定键的意义在于两个相同的对象可能驻留在对象存储中,因此浏览器在仅提供对象本身时无法知道给您什么对象.不过大概是因为我首先使用索引检索它,所以可能有一些方法可以利用索引来检索与我正在使用的对象相关联的外键。
您必须保留放置时生成的外线密钥。它在成功请求事件结果中。
当数据被插入数据存储时,返回的 event 对象包含有关用于插入数据的键的信息。可以使用 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);
};