1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
   |  let routerDBRequest = window.indexedDB.open('dataAnalysis') <!-- error 表示数据库打开失败 --> routerDBRequest.onerror = (event) => {     console.log('打开失败')     console.log(event) } <!-- success 表示数据库打开成功 --> routerDBRequest.onsuccess = (event) => {     console.log('打开成功')     <!-- 读取单条数据 -->     db = event.target.result     let trans = db.transaction(['allRouteData'])     let objectStores  = trans.objectStore('allRouteData')     let request = objectStores.get(1)  // get参数为主键的值     request.onsuccess = (event) => {         const newRoute = []         newRoute.push(event.target.result)         store.dispatch('dealRouter/SaveAllRouter', newRoute)         router.push({ path: newRoute[0].path })     }
      <!-- 批量读取数据 -->     objectStores.openCursor().onsuccess = (event) => {         let res = event.target.result         if(res) {             let val = res.value             newRoute.push(val)             store.dispatch('dealRouter/SaveAllRouter', newRoute)             router.push({ path: newRoute[0].path })             res.continue()         } else {             console.log('完成索引')         }     }
      <!-- 修改数据 -->     let objectStores  = db.transaction(['allRouteData'], 'readwrite').objectStore('allRouteData')     const newRoute = []     objectStores.put({id: 1, name: '首页', component: 'Layout', path: '/', redirect: '/dashboard', meta:'{"title":"首页"}', children: [{     name: '首页',     path: 'dashboard',     component: 'Dashboard',     id: 2,     meta:'{"title":"首页"}'     }]})
      <!-- 删除数据 -->     let objectStores  = db.transaction(['allRouteData'], 'readwrite').objectStore('allRouteData').del(1)     request.onsuccess = (event) => {         console.log('数据删除成功')     } } } <!-- upgradeneeded  数据库升级事件(指定版本大于数据库实际版本时触发) --> routerDBRequest.onupgradeneeded = (event) => {     let db = event.target.result
      <!-- 创建数据仓库/新建表 -->     <!-- allRouteData为表名,keyPath为主键,使用autoIncrement可以自动生成主键 -->     if(!db.objectStoreNames.contains("allRouteData")) {         let allRoute = this.db.createObjectStore("allRouteData", { keyPath: 'id'})         <!-- IDBObject.createIndex()是新建索引的方法, 三个参数分别为索引名称、索引所在的属性、配置对象(说明该属性是否包含重复的值) -->         allRoute.createIndex('id', 'id', { unique: true })         allRoute.createIndex('name', 'name', { unique: false })         allRoute.createIndex('path', 'path', { unique: false })         allRoute.createIndex('component', 'component', { unique: false })         allRoute.createIndex('hiddenInMenu', 'hiddenInMenu', { unique: false})         allRoute.createIndex('redirect', 'redirect', {unique: false})         allRoute.createIndex('meta', 'meta', { unique: false})     }
      <!-- 写入数据 -->     var objectStore = transaction.objectStore("allRouteData")     let addReq = objectStore.add(${data})     addReq.onsuccess = (event)=> {     console.log('数据写入成功')     }     addReq.onerror = (event) => {     console.log('数据写入失败')     }          <!-- 利用索引检索数据 -->     let objectStores  = db.transaction(['allRouteData'], 'readwrite').objectStore('allRouteData')     let index = objectStores.index("name")     index.get('首页').onsuccess = (event)=> {     console.log(event.target.result)     }
 
  |