IndexedDB 資料庫新增資料

admin發表於2019-06-18

本文通過程式碼例項介紹一下如何如何為IndexedDB資料庫新增資料。

IndexedDB資料庫沒有表的概念,其中扮演表角色的是objectStore物件倉庫。

為資料庫新增資料,就是為資料庫中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" });   
}

request.onsuccess = (ev) => {
  let db = ev.target.result;
  if (!db.objectStoreNames.contains('students')) {
    let objectStore = db.createObjectStore("students", { keyPath: "id" });   
  } 
  let transactionRequest = db.transaction(['students'], 'readwrite')
    .objectStore('students')
    .add({ id: 1, name: '張三', age: 18, email: 'ant@163.com' });

  transactionRequest.onsuccess = function (event) {
    console.log('資料寫入成功');
  };

  transactionRequest.onerror = function (event) {
    console.log('資料寫入失敗');
  }
}
</script>
</head>
<body>
  <p>程式碼演示如何為資料庫新增資料</p>
</body>
</html>

程式碼執行效果截圖如下:

aid[3349]

上述程式碼為名稱為students的物件倉庫新增了以資料,分析如下:

(1).通過indexedDB.open方法開啟指定名稱資料庫,如果資料庫不存在,那麼建立對應資料庫。

(2).如果是建立資料庫,那麼會觸發upgradeneeded事件,然後在事件處理函式中建立對應的資料倉儲。

(3).如果資料庫已存在,開啟成功則觸發success事件,事件處理函式首先判斷是否存在對應的物件倉庫,如果不存在,則建立,並通過add方法為其新增資料,IndexedDB讀寫等操作都是在transaction事務中完成。

add方法:

此方法屬於IDBObjectStore物件,也就是物件倉庫物件。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
let request = objectStore.add(value, key);

引數解析:

(1).value:必需,要寫入的資料。

(2).key:可選,資料的主鍵,如果主鍵既不是指定資料的屬性,也不是自增長,那麼就需要人為指定。

更多內容不再介紹,具體可以參閱如下幾篇文章:

(1).事務可以參閱IDBTransaction 事務物件一章節。

(2).indexedDB.open可以參閱IndexedDB.open()開啟與新建資料庫一章節。

(3).關於主鍵可以參閱IndexedDB 資料庫主鍵一章節。

相關文章