1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
---
title: IDBDatabase.createObjectStore
slug: Web/API/IDBDatabase/createObjectStore
tags:
- API
- Database
- IDBDatabase
- IndexedDB
- Storage
- createObjectStore
translation_of: Web/API/IDBDatabase/createObjectStore
---
<p>{{ APIRef("IDBDatabase") }}</p>
<div>
<p> {{domxref("IDBDatabase")}} インターフェイスの<code>createObjectStore()</code> メソッドは、新しいオブジェクトストアやインデックスを生成して返します。</p>
</div>
<p>このメソッドは、ストアの名前をとるだけでなく、重要なオプションプロパティを定義するためのオプションオブジェクトもとります。ストアの個々のオブジェクトを一意にするために、プロパティを使用できます。 プロパティが識別子ならば、それはすべてのオブジェクトで一意であり、すべてのオブジェクトはそのプロパティを持つべきです。</p>
<p>WebKitブラウザでは、オブジェクトストアやインデックスを生成できるようになる前に、{{ domxref("IDBVersionChangeRequest.setVersion")}}メソッドを呼び出さなければなりません。</p>
<h2 id="構文">構文</h2>
<pre class="notranslate"><em>IDBDatabase</em>.createObjectStore(<em>name</em>);
<em>IDBDatabase</em>.createObjectStore(<em>name</em>, <em>options</em>);</pre>
<h3 id="戻り値">戻り値</h3>
<dl>
<dt>{{domxref("IDBObjectStore")}}</dt>
<dd>新しく生成されたオブジェクトストア。</dd>
</dl>
<h3 id="例外">例外</h3>
<p>このメソッドは、次の型の1つを含む{{domxref("DOMError")}}を伴う{{domxref("DOMException")}}を発生させるかもしれません。</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Exception</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>InvalidStateError</code></td>
<td>このメソッドが<code>versionchange</code>トランザクションのコールバックとして呼び出されなかった。WebKitブラウザでは、はじめに {{ APIRef("IDBVersionChangeRequest.setVersion")}}を呼び出さなければならない。既に削除されたか取り除かれたオブジェクトを要求した場合も発生する。</td>
</tr>
<tr>
<td><code>ConstraintError</code></td>
<td>与えられた名前のオブジェクトストア(based on case-sensitive comparison) が接続中のデータベースに既に存在する。</td>
</tr>
<tr>
<td><code>InvalidAccessError</code></td>
<td><code>autoIncrement</code>がtrueに設定されていて、<code>keyPathが空文字か空文字を含む配列の場合。</code><br>
</td>
</tr>
</tbody>
</table>
<h2 id="例">例</h2>
<pre class="brush: js;highlight:[17] notranslate"> // Let us open our database
var request = window.indexedDB.open("toDoList", 4);
// This event handles the event whereby a new version of the database needs to be created
// Either one has not been created before, or a new version number has been submitted via the
// window.indexedDB.open line above
//it is only implemented in recent browsers
request.onupgradeneeded = function(event) {
var db = event.target.result;
db.onerror = function(event) {
note.innerHTML += '<li>Error loading database.</li>';
};
// Create an objectStore for this database
var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" });
// define what data items the objectStore will contain
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>Object store created.</li>';
};</pre>
<h2 id="パラメーター">パラメーター</h2>
<dl>
<dt>name</dt>
<dd>新しく作られるオブジェクトストア名。</dd>
<dt>optionalParameters</dt>
<dd>
<p><em>オプション。</em>メソッドのオプションパラメーターとなる属性を持つオプションオブジェクト。これは次のプロパティを持つ。</p>
<table class="standard-table">
<thead>
<tr>
<th scope="col">Attribute</th>
<th scope="col">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>keyPath</code></td>
<td>新しいオブジェクトストアで使用される<a href="/en-US/docs/Web/API/IndexedDB_API/Basic_Concepts_Behind_IndexedDB#gloss_keypath">key path</a>。空や特定されていない場合、オブジェクトストアはKey Pathなしで生成されて、<a href="/en-US/docs/IndexedDB#gloss_out-of-line_key">out-of-line keys</a>が使用される。</td>
</tr>
<tr>
<td><code>autoIncrement</code></td>
<td><code>trueだった場合、オブジェクトストアは</code><a href="/en-US/docs/IndexedDB#gloss_key_generator">key generator</a>を持つ。既定値は<code>false。</code></td>
</tr>
</tbody>
</table>
<p>未知のパラメーターは無視される。</p>
</dd>
</dl>
<h2 id="仕様">仕様</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName('IndexedDB', '#widl-IDBDatabase-createObjectStore-IDBObjectStore-DOMString-name-IDBObjectStoreParameters-optionalParameters', 'createObjectStore()')}}</td>
<td>{{Spec2('IndexedDB')}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザ実装状況</h2>
<p>{{Compat("api.IDBDatabase.createObjectStore")}}</p>
<h2 id="関連項目">関連項目</h2>
<ul>
<li><a href="/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB">Using IndexedDB</a></li>
<li>Starting transactions: {{domxref("IDBDatabase")}}</li>
<li>Using transactions: {{domxref("IDBTransaction")}}</li>
<li>Setting a range of keys: {{domxref("IDBKeyRange")}}</li>
<li>Retrieving and making changes to your data: {{domxref("IDBObjectStore")}}</li>
<li>Using cursors: {{domxref("IDBCursor")}}</li>
<li>Reference example: <a class="external" href="https://github.com/mdn/to-do-notifications/tree/gh-pages">To-do Notifications</a> (<a class="external" href="http://mdn.github.io/to-do-notifications/">view example live</a>.)</li>
</ul>
|