データベースのオープンとObjectStoreの作成/オープン

データベースのオープンとObjectStoreの作成/オープン

それでは、Indexed Database APIの基本的な使い方を解説します。

まず、データベースを開くことから始めます。これは、indexedDBというオブジェクトの「open」というメソッドで行います。

indexedDB.open(データベース名, データベースの概要名)

このメソッドの戻り値は、オブジェクトになっています。このオブジェクトのonsuccessプロパティに、データベースを開くことに成功した時に実行する関数を指定します。関数のパラメータのオブジェクトには「result」というプロパティがあり、これがデータベースのオブジェクトを指します。

例えば、名前が「sample」で、概要が「Sample Database」のデータベースを開く場合、以下のような手順で処理をします。変数dbがデータベースを指します。

なお、Firefox 4 β6では、「indexedDB」ではなく「moz_indexedDB」と書く必要があります。

データベースを開いたら、次にObjectStoreを作成するか、または既存のObject Storeを開きます。

ObjectStoreを作る場合は、データベースのオブジェクトに対し、「createObjectStore」というメソッドを実行します(表7)。

db.createObjectStore(ObjectStore名, KeyPath, 自動連番)

表7: createObjectStoreメソッドのパラメータ

パラメータ内容
ObjectStore名ObjectStoreの名前
KeyPath保存するオブジェクトのうち、キーとして使うプロパティの名前
自動連番このパラメータにtrueを渡すと、キーのプロパティに自動的に連番が付けられる


一方、既存のObjectStoreを開く場合は、「objectStore」というメソッドを実行します。2つ目のパラメータの「0」は、ObjectStoreを読み書き可能にすることを意味します。

db.objectStore(ObjectStore名, 0);

createObjectStore/objectStoreメソッドともに、戻り値がObjectStoreオブジェクトを指します。

例えば、以下のようにObjectStoreを作りたいとします。

  1. 名前はaddress
  2. 「id」というプロパティに自動的に連番を振る
  3. 戻り値のオブジェクトを変数addrに割り当てる

この場合、以下のように書きます。

addr = db.createObjectStore('address', 'id', true);

データの読み書き

ObjectStoreを開いたら、そのオブジェクトのputメソッドで、オブジェクトを保存することができます。例えば、前述のように変数addrにObjectStoreを割り当てた場合、以下のように書くと、そのObjectStoreに表8のオブジェクトを保存することができます。

addr.put({ name : '山田太郎', address : '東京都' });

表8: 保存するオブジェクト

プロパティ値
name山田太郎
address東京都


また、getというメソッドでオブジェクトを読み込むことができます。パラメータとして、オブジェクトのKeyを指定します。例えば、addrというObjectStoreから、Keyが1になっているオブジェクトを読み込むには、以下のように書きます。

addr.get(1);

getメソッドの戻り値のオブジェクトには、「onsuccess」というプロパティがあります。このプロパティに、読み込みに成功した時に実行する関数を指定します。以下のように書くと、読み込んだオブジェクトが変数objに代入されます。

ここまでで説明したほかに、ObjectStoreにインデックスを設定してオブジェクトを検索したり、カーソルを使ってオブジェクトを順に読み込んだりすることも可能です。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30