我在使用桌面 Chrome 时遇到的 HTML5 Indexed DB 的另一个问题是我无法从对象存储中删除记录。 onsuccess 事件被触发,但记录仍然存在...我的 ID 是一个时间戳,只是因为我想更快地实现一个工作应用程序。我硬编码了它,但它仍然不起作用。这真的很奇怪,因为触发了 onsuccess 事件......
“执行此操作”的代码部分如下:
尝试
{
if (localDatabase != null && localDatabase.db != null)
{
var store = localDatabase.db.transaction("patients", "readwrite").objectStore("patients");
var request = store.delete("1384882073632");
request.onsuccess = function(event)
{
alert("Patient deleted from DB");
update_patients_stored();
aux1.value = "";
aux2.value = "";
aux3.value = "";
aux4.value = "";
};
request.onerror = function(event)
{
alert("Error deleting");
};
}
}
catch(e)
{
alert(e);
}
先感谢您!
我发现了类似的问题。非删除行为,但触发了 onsuccess 事件。尽管w3 IDBObjectStore.delete 规范 https://www.w3.org/TR/IndexedDB/#widl-IDBObjectStore-delete-IDBRequest-any-key状态关键参数可以是任何类型,我解决了它强制参数转换为数字:
//My version
//I use default autoIncrement for keys
var objectStore = db.createObjectStore(objStoreName,{autoIncrement:true});
//appears to need a number for the key (but retrieved from HTML as string
var request = db.transaction(objStoreName,'readwrite')
.objectStore(objStoreName)
.delete(Number(parent.id));
request.onsuccess = function(e) {
console.log("element deleted"); //sadly this always run :-(
}
所以你的第四行应该是:
var request = store.delete(1384882073632); //integer id
//rather than (WRONG):
//var request = store.delete("1384882073632"); //WRONG! string id
试了一下:
Chromium——Manjaro Linux 上的版本 50.0.2661.94(64 位)
尚未在其他环境或浏览器上进行测试,但猜测这是您的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)