indexedDB 資料庫版本

admin發表於2019-07-14

關於資料庫版本在IndexedDB.open() 開啟與新建資料庫一章節已經介紹。

雖然比較簡單,但有些細節可能容易被忽略,所以本文再通過程式碼例項對其進行一下介紹。

一.版本變化:

版本變化大家應該都不陌生,比如最為熟悉的作業系統版本升級。

修改版本通常是在結構、程式碼或功能上有改動,indexedDB資料庫也是如此。

比如對資料庫物件倉庫的新增或者刪除,或者修改物件倉庫的索引。

資料庫資料的新增、刪除或者修改不在此列,有本質的區別。

二.版本號規則:

首先看一段程式碼例項:

[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('person')) {
    let objectStore = db.createObjectStore('person', { keyPath: 'id' });
  }
}

request.onsuccess = (ev) => {
  console.log("螞蟻部落");
}
</script>
</head>
<body>
  <p>上述程式碼建立一個名為"antzone"</p>
</body>
</html>

程式碼分析如下:

(1).indexedDB.open方法第二個引數用於設定資料庫的版本,可以省略。

(2).引數是整數,規定小數可能會出現一些問題,且會自動轉換為最接近的整數。

(3).如果新建資料庫,且省略此引數,那麼預設值為1,否則版本為規定值。

(4).如果開啟資料庫,切省略此引數,那麼值為當前版本,如果規定,則值必須大於等於當前版本。

(5).大於當前版本,則會觸發upgradeneeded事件。

(6).在同一時刻只會存在一個版本資料庫,且資料庫版本變動只能增加不能減少。

最後總結:

(1).資料庫版本變更只能增加不能減少。

(2).同一時刻,只有存在一個資料庫版本。

(3).資料庫版本的改變,必定會觸發upgradeneeded事件,對於資料庫的修改就在此事件處理函式中進行。

(4).資料庫處於open狀態時,修改會被block,直到被close或reload之後,修改才會生效。

相關文章