ほとんどのトーナリーでは、オブジェクトストアからすべてのレコードをカーソルで反復して取り出す方法が示されています。 しかし、キー "myKey"を使ってオブジェクトストアから値を取得するにはどうすればよいですか?Html5 IndexedDB - キーで値を取得する
答えて
単純なキー/値のストレージをお探しの場合は、localStorage
と考えてください。 IndexedDBを使用するよりもはるかに簡単です。これは文字列(これまでのところ)でのみ動作しますが、オブジェクトはJSONオブジェクトを介して簡単に文字列化されます。
console.log('BEFORE', localStorage.getItem('test-key'));
localStorage.setItem('test-key', JSON.stringify({ 'foo': Math.round(Math.random() * 1000) }));
console.log('AFTER', JSON.parse(localStorage.getItem('test-key')));
。キーから値を取得するには、次の2つのいずれかの操作を行います。
1)myKey
があなたの主キー(ストアを作成するときに追加された)の場合:
var request = transaction.get(key);
その後、onsuccess
とonerror
を追加することができますコールバックを使用して、event.target.result
の値を抽出するイベントオブジェクトを解析します。
2)myKey
が非プライマリインデックス(ストアの作成後に追加したもの)にある場合は、トランザクションでインデックスを開き、インデックスにカーソルを表示します。 (あなたはおそらくあなたが同じキーの下に格納された複数の値を持つたびに1が必要になりますので、より頻繁に議論を参照)カーソルのよう
var transaction_index = transaction.index(index);
var request = transaction_index.get(key);
、あなたにも、単一のキーに対する値を取得するために、これらを使用することができます。 the spec言う:
A key range may consist of a single value.
あなたはIDBKeyRange
オブジェクトを使用してkeyRange
を生成する必要があります。ここでは、MIT-licensed InDB(私の作業中のIndexedDBラッパー)のヘルパーメソッドがあります。このヘルパーメソッドは、単一の値(例えば、InDB.range.get(value)
)またはキー範囲でカーソルを開くことを処理します。
InDB.range.get = function (value, left_bound, right_bound, includes_left_bound, includes_right_bound) {
if (InDB.exists(left_bound) && InDB.exists(right_bound) && InDB.exists(includes_left_bound) && InDB.exists(includes_right_bound)) {
return IDBKeyRange.bound(left_bound, right_bound, includes_left_bound, includes_right_bound);
} else if (InDB.exists(left_bound) && InDB.exists(includes_left_bound)) {
return IDBKeyRange.lowerBound(left_bound, includes_left_bound);
} else if (InDB.exists(right_bound) && InDB.exists(includes_right_bound)) {
return IDBKeyRange.upperBound(right_bound, includes_right_bound);
} else if (InDB.exists(value)) {
return IDBKeyRange.only(value);
} else {
return false;
}
}
あなたはkeyRange
を持っていたら、あなたは2つのいずれかの操作を行います。
1)myKey
ストアを作成するときに追加あなたの主キー()である場合、あなたは(あなたのトランザクションを定期的にカーソルを開きますオプションの方向で)。
var request = transaction.openCursor(keyRange, direction);
2)myKey
は、非プライマリインデックス(あなたが店を作成した後に追加したもの)である場合、あなたの取引上のインデックスを開き、インデックスにカーソルをオープン。
var transaction_index = transaction.index(index);
var request = transaction_index.openCursor(keyRange, direction);
- 1. 値からキーを取得するHTML5 localStorage
- 2. PDFTron - IndexedDBからデータを取得
- 3. 取得キー値は
- 4. 外部キー値を取得
- 5. キーから値を取得するPHP
- 6. Perlがキーの値を取得する
- 7. HTML5 indexedDBと永続性の寿命
- 8. AndroidでJSONキー値を取得
- 9. キーで配列の値を取得
- 10. 最大値でdictキーを取得
- 11. キー値でSPListからデータを取得
- 12. コマンドプロンプトでキーと値を取得
- 13. Javascript/Jqueryキー/値からキーを取得する方法
- 14. IndexedDBからトップ1の行を取得する方法
- 15. groovy:マップのキーから値を取得する(リストです)
- 16. LINQを使用してAttributeCollectionでキーの値を取得する
- 17. PHPで簡単にXMLキーと値を取得する
- 18. VB.NET 2005アプリケーションでキーボードのキー値を取得する方法は?
- 19. Mechanizeでbr.forms()のキーと値を取得する
- 20. 辞書のキーなしで値を取得するには?
- 21. andoridのイテレータでJsonのキーと値を取得する方法
- 22. そのキーで配列値を取得する
- 23. html5ファイルパスを取得
- 24. AndroidのHTML5ビデオタグsrc属性の値を取得する方法
- 25. キー・キーのkeysymを取得する
- 26. Java HashMapキー値の格納と取得
- 27. ArrayListMultimapキーを取得する
- 28. jqueryのは、キー/値を取得 - ASPからキーがダウン
- 29. Up/Downキーを使用してListViewの値を取得する
- 30. XSLT内でキー値のペアを作成し、キーを使用して値を取得する方法
「var request = transaction.get(key);」と思われます。 "Uncaught TypeError:Object#にはメソッド 'get'がありません。私はあなたが書いたように、トランザクションではなくobjectStore上で.get()メソッドを呼び出す必要があると思います。そうですか? –
Matthew
トランザクションを介してのみオブジェクトストアデータにアクセスできますが、 'objectStore'で' get() 'を呼び出すのは正しいです。 'transaction'のvar宣言はここでは示されていませんが、' event.objectStore(database) 'のようなものです。 – buley
注目すると、データベース(http://www.w3.org/TR/IndexedDB/#idl-def-IDBDatabase)上のトランザクションを「var event = database」で開きます。トランザクション([データベース]、タイプ、タイムアウト); – buley