我有一个带有键路径“id”(自动增量)的对象存储,以及该存储上的唯一索引,该索引具有从服务器生成的键路径“myId”。当我需要更新记录时,我没有可用的“id”,那么考虑到索引是唯一的,如何仅使用“myId”来更新记录?
我已经尝试过使用 mystore.put(record),但是由于已经存在带有“myId”的记录,所以会出错。
我有一个带有键路径“id”(自动增量)的对象存储,以及该存储上的唯一索引,该索引具有从服务器生成的键路径“myId”。当我需要更新记录时,我没有可用的“id”,那么考虑到索引是唯一的,如何仅使用“myId”来更新记录?
我已经尝试过使用 mystore.put(record),但是由于已经存在带有“myId”的记录,所以会出错。
由于您已经在您的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
我所做的那样。