aboutsummaryrefslogtreecommitdiff
path: root/files/ja/web/api/idbcursor/index.html
blob: 7b024be8363ce2bcfb73d8b921802834694d809c (plain)
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
---
title: IDBCursor
slug: Web/API/IDBCursor
tags:
  - API
  - Database
  - IDBCursor
  - IndexedDB
  - Interface
  - NeedsTranslation
  - Reference
  - Storage
  - TopicStub
translation_of: Web/API/IDBCursor
---
<p>{{APIRef("IndexedDB")}}</p>

<p><a href="/ja/docs/IndexedDB">IndexedDB API</a><strong><code>IDBCursor</code></strong> インターフェイスはデータベースの複数レコードを横断したり繰り返すための<a href="/ja/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB#gloss_cursor">カーソル</a>です。</p>

<p>このカーソルはどのインデックスやオブジェクトをループしているかを示す元です。これは範囲内の位置を示す持ち、レコードのキー順に増/減して動きます。カーソルはアプリケーションからカーソル範囲内の全レコードに非同期に処理できるようにします。</p>

<p>一度に無制限の数のカーソルを持つことができます。あるカーソルを表す同一の <code>IDBCursor</code> オブジェクトを取得できます。操作はインデックスやオブジェクトストアに対して実行されます。</p>

<p>{{AvailableInWorkers}}</p>

<h2 id="Properties" name="Properties">プロパティ</h2>

<dl>
 <dt>{{domxref("IDBCursor.source")}} {{readonlyInline}}</dt>
 <dd>カーソルが繰り返している{{domxref("IDBObjectStore")}}{{domxref("IDBIndex")}} を返します。この関数は、カーソルが現在繰り返されていたり、繰り返しが終わりを過ぎたり、トランザクションがアクティブでなくても、null や例外を返しません。</dd>
 <dt>{{domxref("IDBCursor.direction")}} {{readonlyInline}}</dt>
 <dd>カーソルの横断の向きを返します。取りうる値については <a href="https://developer.mozilla.org/ja/docs/Web/API/IDBCursor$edit#const_next">Constants</a> を見てください。</dd>
 <dt>{{domxref("IDBCursor.key")}} {{readonlyInline}}</dt>
 <dd>カーソル位置のレコードのキーを返します。カーソルが範囲外の場合、<code>undefined</code> にセットされます。カーソルキーはあらゆるデータ型となりえます。</dd>
 <dt>{{domxref("IDBCursor.value")}} {{readonlyInline}}</dt>
 <dd>カーソル位置のレコードの値を返します。カーソルの値はあらゆるデータ型となりえます。</dd>
 <dt>{{domxref("IDBCursor.primaryKey")}} {{readonlyInline}}</dt>
 <dd>カーソルの現在有効な主キーを返します。カーソルが現在繰り返されていたり範囲外で繰り返されていた場合、これは <code>undefined</code> にセットされます。カーソルの主キーはあらゆるデータ型となりえます。</dd>
</dl>

<h2 id="Methods" name="Methods">メソッド</h2>

<dl>
 <dt>{{domxref("IDBCursor.advance()")}}</dt>
 <dd>Sets the number times a cursor should move its position forward.</dd>
 <dt>{{domxref("IDBCursor.continue()")}}</dt>
 <dd>Advances the cursor to the next position along its direction, to the item whose key matches the optional <code>key</code> parameter.</dd>
 <dt>{{domxref("IDBCursor.continuePrimaryKey()")}}</dt>
 <dd>Sets the cursor to the given index key and primary key given as arguments.</dd>
 <dt>{{domxref("IDBCursor.delete()")}}</dt>
 <dd>Returns an {{domxref("IDBRequest")}} object, and, in a separate thread, deletes the record at the cursor's position, without changing the cursor's position. This can be used to delete specific records.</dd>
 <dt>{{domxref("IDBCursor.update()")}}</dt>
 <dd>Returns an {{domxref("IDBRequest")}} object, and, in a separate thread, updates the value at the current position of the cursor in the object store. This can be used to update specific records.</dd>
</dl>

<h2 id="Constants" name="Constants">Constants</h2>

<div>{{ deprecated_header(13) }}</div>

<div class="warning">
<p>これらの constants は利用できません — Gecko 25 で削除されました。代わりに直接 string constants を使う必要があります。({{ bug(891944) }})</p>
</div>

<ul>
 <li><code>NEXT </code>: <code>"next"</code> : The cursor shows all records, including duplicates. It starts at the lower bound of the key range and moves upwards (monotonically increasing in the order of keys).</li>
 <li><code>NEXTUNIQUE</code> : <code>"nextunique"</code> : The cursor shows all records, excluding duplicates. If multiple records exist with the same key, only the first one iterated is retrieved. It starts at the lower bound of the key range and moves upwards.</li>
 <li><code>PREV </code>: <code>"prev"</code> : The cursor shows all records, including duplicates. It starts at the upper bound of the key range and moves downwards (monotonically decreasing in the order of keys).</li>
 <li><code>PREVUNIQUE </code>: <code>"prevunique"</code> : The cursor shows all records, excluding duplicates. If multiple records exist with the same key, only the first one iterated is retrieved. It starts at the upper bound of the key range and moves downwards.</li>
</ul>

<h2 id="Example" name="Example"></h2>

<p>In this simple fragment we create a transaction, retrieve an object store, then use a cursor to iterate through all the records in the object store. T<span style="line-height: 1.5;">he cursor does not require us to select the data based on a key; we can just grab all of it. Also note that in each iteration of the loop, you can grab data from the current record under the cursor object using </span><code style="font-style: normal; line-height: 1.5;">cursor.value.foo</code><span style="line-height: 1.5;">. For a complete working example, see our <a href="https://github.com/mdn/IDBcursor-example/">IDBCursor example</a></span><span style="line-height: 1.5;"> (</span><a href="http://mdn.github.io/IDBcursor-example/" style="line-height: 1.5;">view example live</a><span style="line-height: 1.5;">.)</span></p>

<pre class="brush: js"><span style="line-height: 1.5;">function displayData() {</span>
  var transaction = db.transaction(['rushAlbumList'], "readonly");
  var objectStore = transaction.objectStore('rushAlbumList');

  objectStore.openCursor().onsuccess = function(event) {
    var cursor = event.target.result;
    if(cursor) {
      var listItem = document.createElement('li');
      listItem.innerHTML = cursor.value.albumTitle + ', ' + cursor.value.year;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log('Entries all displayed.');
    }
  };
}</pre>

<h2 id="Specifications" name="Specifications">仕様</h2>

<table class="standard-table">
 <tbody>
  <tr>
   <th scope="col">仕様書</th>
   <th scope="col">策定状況</th>
   <th scope="col">コメント</th>
  </tr>
  <tr>
   <td>{{SpecName('IndexedDB', '#idl-def-IDBCursor', 'cursor')}}</td>
   <td>{{Spec2('IndexedDB')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザー実装状況</h2>

<div>


<p>{{Compat("api.IDBCursor")}}</p>
</div>

<h2 id="See_also" name="See_also">関連情報</h2>

<ul>
 <li><a href="/ja/docs/Web/API/IndexedDB_API/Using_IndexedDB">IndexedDB を使用する</a></li>
 <li>トランザクションを開始する: {{domxref("IDBDatabase")}}</li>
 <li>トランザクションを使用する: {{domxref("IDBTransaction")}}</li>
 <li>キーの範囲をセットする: {{domxref("IDBKeyRange")}}</li>
 <li>データを取得、変更する: {{domxref("IDBObjectStore")}}</li>
 <li>カーソルを使用する: {{domxref("IDBCursor")}}</li>
 <li>リファレンスの例: <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>