1

私はindexed_dbを少しいじっていますが、これまでのところかなり印象的です。

ただし、単一のレコードを選択する際に問題が発生します。それを機能させる唯一の方法は、「テーブル」全体を選択し、必要なキーが見つかるまで処理することです。(objectStore.openCursor())。index.getKey()は何らかの方法で使用できると思いますが、これを機能させる方法を見つけることができませんでした。私が試みたもう1つのことは、index.openCursor()でした。

誰かがこれを行う方法の実用的な例を投稿していただけますか?(キーで単一の「レコード」を選択します)。

4

1 に答える 1

0

次のようなことを試してください:

import 'dart:html';
import 'dart:indexed_db';


void main() {

  List data = [
               {"name":"Chris", "lang":"Dart"},
               {"name":"Tom", "lang": "Java"}
               ];

  OpenDBRequest request = window.indexedDB.open("MyDatabase", 1);

  // create the structure
  request.onUpgradeNeeded.first.then((d) {
    var db = request.result;
    var objectStore = db.createObjectStore("people", { "keyPath":"name" });

    // create an index
    objectStore.createIndex("name", "name", { "unique": false });

    // insert some data
    data.forEach((record) => objectStore.add(record));
  });  

  // query for item with the name="Chris"
  request.onSuccess.first.then((v) {
    var db = request.result;

    var objectStore = db.transaction("people","readwrite").objectStore("people");

    // query for the object where name = "Chris"
    var requestedObject = objectStore.getObject("Chris");

    requestedObject.onSuccess.first.then((val) {
      // we've retrieved the value, print out fields
      print(requestedObject.result["name"]); // Chris
      print(requestedObject.result["lang"]); // "Dart"
    });

  });


}

参考文献: todo MVC の例のこの github コードとこれらのMDN ドキュメントを 使用して、IndexedDB (および Dart SDK + Editor 17463) を理解しました。

于 2013-01-31T22:04:27.060 に答える