0

我有一个带有键路径“id”(自动增量)的对象存储,以及该存储上的唯一索引,该索引具有从服务器生成的键路径“myId”。当我需要更新记录时,我没有可用的“id”,那么考虑到索引是唯一的,如何仅使用“myId”来更新记录?

我已经尝试过使用 mystore.put(record),但是由于已经存在带有“myId”的记录,所以会出错。

4

1 回答 1

5

由于您已经在您的myId财产上获得了唯一的键索引,您可以根据该值检索记录。您需要使用和查询,如下所示:only IDBKeyRangecursor

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我所做的那样。

于 2013-05-12T23:39:31.557 回答