IDBDatabase.createObjectStore
IDBDatabase
インターフェイスの createObjectStore()
メソッドは、新しいオブジェクトストアやインデックスを生成して返します。
このメソッドは、ストアの名前をとるだけでなく、重要なオプションプロパティを定義するためのオプションオブジェクトもとります。ストアの個々のオブジェクトを一意にするために、プロパティを使用できます。 プロパティが識別子ならば、それはすべてのオブジェクトで一意であり、すべてのオブジェクトはそのプロパティを持つべきです。
WebKit ブラウザでは、オブジェクトストアやインデックスを生成できるようになる前に、IDBVersionChangeRequest.setVersion
メソッドを呼び出さなければなりません。
構文
IDBDatabase.createObjectStore(name); IDBDatabase.createObjectStore(name, options);
返値
IDBObjectStore
-
新しく生成されたオブジェクトストア。
例外
このメソッドは、次の型の 1 つを含む DOMError
を伴う DOMException
を発生させるかもしれません。
例外 | 説明 |
---|---|
InvalidStateError |
このメソッドが versionchange トランザクションのコールバックとして呼び出されませんでした。WebKit ブラウザでは、はじめに を呼び出さなければなりません。既に削除されたか取り除かれたオブジェクトを要求した場合も発生します。 |
ConstraintError |
与えられた名前のオブジェクトストア (大文字と小文字を区別する比較に基づく) が接続中のデータベースに既に存在します。 |
InvalidAccessError |
autoIncrement が true に設定されていて、keyPath が空文字か空文字を含む配列の場合。` |
例
js
// 我々のデータベースを開きましょう
var request = window.indexedDB.open("toDoList", 4);
// このイベントハンドラーは、新しいバージョンのデータベースの作成が必要なことを表すイベントを処理します。
// これは、データベースが作成されていないときや、上の行の window.indexedDB.open に
// 新しいバージョン番号が渡されたときです。
// これは、最近のブラウザーでしか実装されていません。
request.onupgradeneeded = function (event) {
var db = event.target.result;
db.onerror = function (event) {
note.innerHTML += "<li>データベースの読み込みに失敗しました。</li>";
};
// データベースにオブジェクトストアを作成します。
var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });
// オブジェクトストアにどのようなデータ項目が入るかを定義します。
objectStore.createIndex("hours", "hours", { unique: false });
objectStore.createIndex("minutes", "minutes", { unique: false });
objectStore.createIndex("day", "day", { unique: false });
objectStore.createIndex("month", "month", { unique: false });
objectStore.createIndex("year", "year", { unique: false });
objectStore.createIndex("notified", "notified", { unique: false });
note.innerHTML += "<li>オブジェクトストアが作成されました。</li>";
};
引数
name
-
新しく作られるオブジェクトストア名。
optionalParameters
-
オプション。 メソッドのオプションパラメーターとなる属性を持つオプションオブジェクト。これは次のプロパティを持ちます。
プロパティ 説明 keyPath
新しいオブジェクトストアで使用されるキーパス。空や特定されていない場合、オブジェクトストアはキーパスなしで生成されて、アウトオブラインキー が使用されます。 autoIncrement
true
だった場合、オブジェクトストアはキージェネレーターを持ちます。既定値はfalse
。未知のパラメーターは無視されます。
仕様書
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbdatabase-createobjectstore① |
ブラウザーの互換性
BCD tables only load in the browser
関連項目
- IndexedDB の使用
- トランザクションの開始 :
IDBDatabase
- トランザクションの使用 :
IDBTransaction
- キーの範囲の設定 :
IDBKeyRange
- データの取得と変更 :
IDBObjectStore
- カーソルの使用 :
IDBCursor
- リファレンス例 : To-do Notifications (動く例を見る)