我有一个带有密钥路径“id”(自动增量)的对象存储,以及该服务器上从服务器生成的具有密钥路径“myId”的唯一索引。 当我需要更新记录时,我没有“id”可用,那么考虑到索引是唯一的,如何使用“myId”来更新记录?
我已经尝试过使用mystore.put(record),但由于已经存在“myId”的记录,因此会出错。
答案 0 :(得分:3)
由于您已在myId
属性上获得了唯一键索引,因此您可以根据该值检索记录。您需要使用only
IDBKeyRange
和cursor
查询,如下所示:
var transaction = db.transaction('myStore');
var store = transaction.objectStore('myStore');
var index = store.index('myId_Index');
var keyRange = IDBKeyRange.only(obj.myId);
var request = index.openCursor(keyRange);
request.onsucess = function (e) {
var cursor = e.target.result;
if (cursor) {
var item = cursor.value;
obj.id = item.id;
//save the object
}
};
此外,如果您想使用相同的交易进行更新,则需要将其设为readwrite
,而不是readonly
。