IndexedDB问题?

const request = window.indexedDB.open('personDB', 1)
var db

/*
 *数据仓库打开失败
 */
request.onerror = function(error) {
  console.log('IndexedDB 打开失败', error)
};

/*
 *数据仓库打开成功
 */
request.onsuccess = function(res) {
  console.log('IndexedDB 打开成功', res)
  db = res.target.result
}

/*
 *数据仓库升级事件(第一次新建库是也会触发,因为数据仓库从无到有算是升级了一次)
 */
request.onupgradeneeded = function(res) {
  console.log('IndexedDB 升级成功', res)
  db = res.target.result
  if (!db.objectStoreNames.contains('person')) {
    const db_table = db.createObjectStore('person', { keyPath: 'id' })
    db_table.createIndex('indexName', 'name', { unique: false })
  }
}

image.png
使用上述代码在浏览器中新建一个IndexedDB数据库,再使用下面的代码删除数据库,发现删除没反应,一直没有输出删除成功,请问这是为什么?

const deleteRequest = window.indexedDB.deleteDatabase('personDB')
deleteRequest.onerror = function (event) {
  console.log("删除失败")
}
deleteRequest.onsuccess = function (event) {
    console.log("删除成功")
}
阅读 2.3k
1 个回答

问题出现在:

const deleteRequest = window.indexedDB.deleteDatabase('personDB')
  • personDB 是题主打开的一个数据库 链接,它并不是真实的数据库名字

    const request = window.indexedDB.open('personDB', 1)
  • 那么到底真实的数据库叫什么呢?答案在看这一行

    const db_table = db.createObjectStore('person', { keyPath: 'id' })

修正:

const DBDeleteRequest = window.indexedDB.deleteDatabase("person");
                
DBDeleteRequest.onerror = (event) => {
  console.error("Error deleting database.");
};

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

测试得到删除成功,命令行打印 Database deleted successfully

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题