0

I am trying to do simple application with Indexed DB. I want to store multiple items in one objectStore. Is it possible? I tried something like that, but it does not work:

    itemsDB.indexedDB.addTodo = function(Name, Desp) {
    var db = itemsDB.indexedDB.db;
    var trans = db.transaction(['items'], IDBTransaction.READ_WRITE);
    var store = trans.objectStore("items");

    var data = {
      "name": Name,
      "description": Desp, 

    };

    var request = store.put(data);
   } 

I have used sample from http://www.html5rocks.com/en/tutorials/indexeddb/todo/

4

2 に答える 2

3

「ちょうど」IndexedDB をターゲットにすると、互換性のあるクライアントが chrome および firefox ユーザーに絞り込まれます。JayDataを見てください。フォールバック プロバイダー リストのオプションを使用してオブジェクト ストア パターンをサポートしています。クライアントに IndexedDB がある場合はそれが使用されますが、クライアントにあるもの (モバイル デバイスの 95%) が WebSQL のみの場合は webSQL が使用されます。 .

また、構文は保存または取得がはるかに簡単です。ToDo リストの例を確認してください。これは、フォールバック プロバイダー オプションも示しています。

于 2012-05-16T07:24:54.857 に答える
1

IndexedDB オブジェクト ストアは、複数のオブジェクトを格納し、それらの属性間でカーソルを移動できるように設計されています。

問題の原因は明確ではありませんが、どちらかにputキーがある場合、または新しいオブジェクトを追加するのではなく、既存のオブジェクトを置き換えるだけの場合. の代わりに使用したいでしょう。namedescriptionaddput

HTML5Rocks の例について留意すべきことの 1 つは、現時点では Chrome でのみ機能するということです (Chrome には遅れのある IndexedDB 実装があります)。

FWIW、小さなヒントは、JavaScript にエラーがあり (Desp var の後に余分なコンマがある)、IE10 で実行できない可能性があることです。

var data = {
      "name": Name,
      "description": Desp, 

    };
于 2012-05-14T05:29:34.217 に答える