尝试更新记录名称字段,但不是更新记录,而是创建新记录。
我的代码
function editName(e) {
var transaction = db.transaction(["people"],"readwrite");
var store = transaction.objectStore("people");
var request = store.get(5);
request.onsuccess = function(e) {
var data = e.target.result;
data.name = "John";
var objRequest = store.put(data);
objRequest.onsuccess = function(e){
console.log('Success in updating record');
};
}
}
寻找记录5并尝试将其名称字段更改为John。我一直在关注雷蒙德·卡姆登教程http://code.tutsplus.com/tutorials/working-with-indexeddb-part-2--net-35355并搜索其他示例,例如IndexedDB update by id,但似乎无法使它们适应我需要的工作。
答案 0 :(得分:0)
感谢Tiffany Brown的文章,可以在https://dev.opera.com/articles/introduction-to-indexeddb/找到,我找到了一个解决方案,即在 put 调用中添加密钥。
var objRequest = store.put(data, +r);
Josh在他的回答Indexeddb adds a new value instead of updating an existing value中解释说,根据天气,对象商店是否具有关键路径,它可能与内嵌或外线的密钥有关。