Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 检查IndexedDB数据库是否存在_Html_Indexeddb - Fatal编程技术网

Html 检查IndexedDB数据库是否存在

Html 检查IndexedDB数据库是否存在,html,indexeddb,Html,Indexeddb,首先,我从这个链接开始,遇到了问题 情景: 需要检查indexedDB数据库是否存在-如果不存在,请退出 第一个问题:indexedDB.open如果不存在,将创建一个新的数据库。我试图从ONUPGRADE中止事务: 但是我得到了一个错误: InvalidStateError:未能对“IDBTransation”执行“中止”:事务已完成 我还尝试使用deleteDatabase删除数据库,但它不起作用。 实现这一点的最佳方法是什么?您偶然发现了我个人认为是IDB规范中的一个错误。无法判断数据库是

首先,我从这个链接开始,遇到了问题

情景:

需要检查indexedDB数据库是否存在-如果不存在,请退出

第一个问题:indexedDB.open如果不存在,将创建一个新的数据库。我试图从ONUPGRADE中止事务:

但是我得到了一个错误:

InvalidStateError:未能对“IDBTransation”执行“中止”:事务已完成

我还尝试使用deleteDatabase删除数据库,但它不起作用。
实现这一点的最佳方法是什么?

您偶然发现了我个人认为是IDB规范中的一个错误。无法判断数据库是否存在

在实践中实现这一点的方法仅仅是打开要检查是否存在的数据库。如果成功时将数据库连接到open_ctx.event.target.result,则该数据库存在,否则可能不存在,这取决于您的错误消息,它可能正在进行版本更改或其他操作


无论如何,Chrome开发者Joshua Bell似乎也认识到了这个缺点。他公开了不规范的webkitGetDatabaseNames方法,该方法返回一个类似于索引和存储等价物的数据库名称列表

您无意中发现了我个人认为是IDB规范中的一个bug。无法判断数据库是否存在

在实践中实现这一点的方法仅仅是打开要检查是否存在的数据库。如果成功时将数据库连接到open_ctx.event.target.result,则该数据库存在,否则可能不存在,这取决于您的错误消息,它可能正在进行版本更改或其他操作


无论如何,Chrome开发者Joshua Bell似乎也认识到了这个缺点。他公开了不规范的webkitGetDatabaseNames方法,该方法返回一个类似于索引和存储等价物的数据库名称列表

webkitGetDatabaseNames的可能重复项现在已被弃用,并将很快删除。据我所知,还没有提供替代方案。关于webkitGetDatabaseNames的替代方案,请参见Benny Neugebauer的答案:indexedDB.databases和db.namewebkitGetDatabaseNames现在已被弃用,并将很快被删除。据我所知,没有提供替代方案。请参阅Benny Neugebauer的答案,以了解webkitGetDatabaseNames的替代方案:indexedDB.databases和db.name
request.onupgradeneeded = function (e){
  e.target.transaction.abort();
  dbExists = false;
}