如何在indexedDB.deleteDatabase中触发错误事件?

时间:2016-10-14 14:13:15

标签: indexeddb

The documentation说:

  

如果在删除数据库时发生错误,则会出错   在从此返回的请求对象上触发事件   方法

问:如何调用错误以便我可以看到该事件中的内容? 我试图删除null,并且未定义,并且不使用任何参数,但我无法触发错误回调。

2 个答案:

答案 0 :(得分:3)

从deleteDatabase触发错误的唯一原因是浏览器中存在内部错误,例如持有数据库的存储设备已断开连接。

无法从脚本中触发此案例。巧合的是,我在做一些规范工作时注意到这一点,提交了spec issue,并在spec添加了一个条款来解释它:"如果由于任何原因失败了.. "

有关活动的详情,请参阅steps for deleteDatabase

  

如果结果是错误,则设置对结果的请求错误并发送   请求的活动。该事件必须使用Event接口并进行设置   type属性为"错误"。

请注意,有关bubbles / cancelable的后续详细信息本身为open spec issue

答案 1 :(得分:1)

从您提供的原始链接中复制/粘贴。并添加了错误

var DBDeleteRequest = window.indexedDB.deleteDatabase("toDoList");

DBDeleteRequest.onerror = function(event) {
  console.log("Error deleting database.");
};

DBDeleteRequest.onsuccess = function(event) {
  console.log("Database deleted successfully");

  console.log(request.result); // should be null
};

DBDeleteRequest.onerror = function(event) {
  console.error("error in deleting database");
//console.error = read coloring in console.  vs coloring with .log of console
  console.log(event);
}

纯粹在下面猜测。

如果indexeddb文件存储在硬盘驱动器上可能会导致“onerror”或者也许是硬盘驱动器,例如是一个USB驱动器并且已拔下插头,那么可能存在某种疯狂的“读/写/删除”permssion位置?

交易仍在进行中,并且在一个循环或其他东西中挂起并且没有正确结束,并且从未进行过“oncomplete”事件。完成了阙。和管理员在这里按“臭味删除按钮”但停止删除数据库。可以很容易地看到“非计算机人”做某事,并尝试删除某些东西,而其他标签中的其他东西也在继续。