判斷objectStore物件倉庫是否存在
通過createObjectStore()方法可以建立物件倉庫,在同一個資料庫下,倉庫名稱必須是唯一的。
如果建立同名物件倉庫,則會報錯,下面通過一段簡單程式碼例項進行演示:
[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; let objectStore = db.createObjectStore("students",{ keyPath: 'id' }); objectStore.createIndex('studentName', "name", { unique: false }); } </script> </head> <body> </body> </html>
通過上面程式碼可以建立一個名為antzone的資料庫,然後在其中新增名為students物件倉庫。
為了查詢方便,最後通過objectStore.createIndex方法建立索引。
程式碼執行效果截圖如下:
此時要修改一下資料庫結構,那麼必須要將資料庫版本提升,以此觸發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", 2); request.onupgradeneeded = (ev) => { let db = ev.target.result; let objectStore = db.createObjectStore("students",{ keyPath: 'id' }); objectStore.createIndex('studentName', "name", { unique: false }); } </script> </head> <body> </body> </html>
將資料庫的版本修改為2,那麼會觸發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", 2); request.onupgradeneeded = (ev) => { let db = ev.target.result; if (!db.objectStoreNames.contains('students')) { let objectStore = db.createObjectStore("students",{ keyPath: 'id' }); objectStore.createIndex('studentName', "name", { unique: false }); } } </script> </head> <body> </body> </html>
上面程式碼完成了判斷功能,資料庫物件的objectStoreNames屬性可以返回所有的物件倉庫名稱。
返回值型別是DOMStringList 物件(字串的集合),contains方法可以檢測物件倉庫名稱是否已經存在。
相關閱讀:
(1).建立物件倉庫參閱createObjectStore()方法一章節。
(2).建立資料庫參閱indexedDB.open()方法一章節。
(3).建立索引參閱createIndex()方法一章節。
相關文章
- java判斷mysql中資料庫是否存在JavaMySql資料庫
- 寫個方法判斷陣列物件中是否存在某個物件陣列物件
- 如何判斷一個js物件是否存在迴圈引用JS物件
- JavaScript 判斷函式是否存在JavaScript函式
- golang判斷檔案是否存在Golang
- MySQL判斷表名是否存在MySql
- QJsonObject判斷欄位是否存在JSONObject
- postgresql如何判斷表是否存在SQL
- python 判斷檔案是否存在Python
- 判斷一個物件是否為空物件,判斷一個物件中是否有空值物件
- Laravel 5 判斷條件是否存在Laravel
- jQuery 判斷使用者是否存在jQuery
- 怎麼判斷mysql表是否存在MySql
- js判斷dom節點是否存在JS
- js判斷物件是否為空JS物件
- java判斷物件是否為空Java物件
- 判斷物件是否為空物件的方式物件
- sh指令碼判斷路徑是否存在指令碼
- JS判斷物件是否為空物件的方法JS物件
- 如何判斷 JavaScript 物件是否為空?JavaScript物件
- js判斷兩個物件是否相等JS物件
- mysql如何判斷是否存在某個欄位MySql
- 如何判斷FMEA的存在是否還有意義?
- jquery怎麼樣判斷檔案是否存在jQuery
- Python科研武器庫 - 檔案/路徑操作 - 判斷路徑是否存在Python
- 如何判斷一個物件是否為空?物件
- ES6 判斷是否為空物件物件
- 記憶體管理:判斷物件是否存活記憶體物件
- bash函式應用之:判斷函式是否存在函式
- 判斷Map集合中是否存在某一個key
- shell判斷系統路徑中是否存在空格
- sqlserver判斷欄位值是否存在某個字元SQLServer字元
- JavaScript 判斷物件中是否有某屬性JavaScript物件
- 深入理解JVM(③)判斷物件是否還健在?JVM物件
- JavaScript 中,如何判斷兩個物件是否相等?JavaScript物件
- python如何判斷一個物件是否是列表Python物件
- map判斷值是否存在需要注意的問題
- XamarinEssentials教程首選項Preferences判斷專案是否存在