Indexed DB

by yshrkn

JavaScript

// データベースを開く 第2引数はバージョン(整数使用すること>)
var request = window.indexedDB.open("MyTestDatabase", 6);
var db;

// 顧客データ
const customerData = [
  { ssn: "444-44-4444", name: "Bill", age: 35, email: "[email protected]" },
  { ssn: "555-55-5555", name: "Donna", age: 32, email: "[email protected]" }
];

request.onerror = function (event) {
  // エラーの場合の処理
  console.log("DBオープン時にエラーが発生しました。");
};

request.onsuccess = function (event) {
  db = event.target.result;
};

request.onupgradeneeded = function (event) {
  // IDBDatabase インターフェイスに保存します
  var db = event.target.result;

  // このデータベース用の objectStore を作成します 'keyPath'で指定されたデータは一意
  var objectStore = db.createObjectStore("customers!", { keyPath: "ssn" });

  // 顧客を名前で検索するためのインデックスを作成します。
  // 重複する可能性がありますので、一意のインデックスとしては使用できません。
  objectStore.createIndex("name", "name", { unique: false });

  // 顧客をメールアドレスで検索するためのインデックスを作成します。2人の顧客が同じメールアドレスを
  // 使用しないようにしたいので、一意のインデックスを使用します。 
  objectStore.createIndex("email", "email", { unique: true });

  // データを追加する前に objectStore の作成を完了させるため、 
  // transaction oncomplete を使用します。
  objectStore.transaction.oncomplete = function (event) { 
    var customerObjectStore = db.transaction("customers", "readwrite").objectStore("customers");

    for (var i in customerData) {
    	console.log(customerData);
      customerObjectStore.add(customerData[i]);
    }
  };
};