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