IndexedDB upgradeneeded 事件
upgradeneeded事件會在資料庫新建或者升級資料庫版本的時候觸發。
從事件名稱也可以窺探出它的觸發時機,可以認為資料庫新建是版本從無到有的升級。
關於事件處理函式註冊,可以參閱如何註冊事件處理函式一章節。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> let request = window.indexedDB.open("antzone", 1); request.onupgradeneeded = (ev) => { let db = ev.target.result; if (!db.objectStoreNames.contains('students')) { let objectStore = db.createObjectStore('students',{keyPath:"id"}); objectStore.createIndex("xingbie","sex",{ unique: false }); } } </script> </head> <body> <p>upgradeneeded演示</p> </body> </html>
程式碼執行效果截圖如下:
對上述程式碼分析如下:
(1).如果沒有名稱為"antzone"的資料庫,則會通過indexedDB.open()方法建立。
(2).新建立資料庫會觸發upgradeneeded事件。
(3).事件出發後會執行事件處理函式中的程式碼,建立對應資料庫,並進行一些列的配置。
(4).如果要升級資料庫版本,比如將當前版本1修改為更高的版本2,也會觸發upgradeneeded事件。
強調:對於資料庫的結構性修改,比如新增或者刪除物件倉庫等操作需要在此事件中進行。
IndexedDB資料庫建立或者資料增刪改查等操作需要藉助於事務,但好像上述程式碼並沒有涉及事務。
事實並非如此,upgradeneeded事件觸發時候,會自動建立一個事務,並且事務的模式被賦值為verionchange。
下面通過程式碼例項進行一下演示,升級一下資料庫版本到3,以便觸發事件。
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> let request = window.indexedDB.open("antzone", 3); request.onupgradeneeded = (ev) => { let db = ev.target.result; if (!db.objectStoreNames.contains('students')) { let objectStore = db.createObjectStore('students',{keyPath:"id"}); objectStore.createIndex("xingbie","sex",{ unique: false }); } console.log(ev.target.transaction) } </script> </head> <body> <p>upgradeneeded演示</p> </body> </html>
程式碼執行效果截圖如下:
事務很明顯是存在的,只不過此事務不能人為建立。
相關文章
- 初探IndexedDBIndex
- indexedDB articleIndex
- indexedDB.deleteDatabase()IndexdeleteDatabase
- indexedDB 修改索引Index索引
- indexedDB入門Index
- IndexedDB詳解Index
- indexedDB 基本使用Index
- indexedDB transaction 事務Index
- indexedDB 更新資料Index
- indexedDB 新增資料Index
- IndexedDB(一:基本使用)Index
- indexedDB 初體驗Index
- JavaScript IndexedDB 完整指南JavaScriptIndex
- indexedDB 增刪改查Index
- indexedDB 遍歷資料Index
- indexedDB 資料庫 索引Index資料庫索引
- indexedDB 資料庫版本Index資料庫
- indexedDB 查詢資料Index
- indexedDB 刪除資料Index
- indexedDB 批量新增資料Index
- IndexedDB 資料庫概述Index資料庫
- IndexedDB 非同步API概述Index非同步API
- IndexedDB 資料庫用法Index資料庫
- localforage indexedDB如何使用索引Index索引
- IndexedDB學習筆記Index筆記
- IndexedDB使用與出坑指南Index
- indexedDB 資料庫主鍵Index資料庫
- indexedDB 刪除資料庫Index資料庫
- indexedDB替代Web SQL Database原因IndexWebSQLDatabase
- IndexedDB資料庫介紹Index資料庫
- indexedDB 內鍵與外來鍵Index
- IndexedDB 資料庫新增資料Index資料庫
- indexedDB 通過索引查詢資料Index索引
- 前端儲存技術Cookie,Storage,IndexedDB前端CookieIndex
- 前端的資料庫:IndexedDB入門前端資料庫Index
- indexedDB 刪除物件倉庫所有資料Index物件
- indexedDB 索引與primarykey主鍵區別Index索引
- 瀏覽器資料庫 IndexedDB(一) 概述瀏覽器資料庫Index