2012-04-08 19 views
1

私は簡単なメモ帳アプリケーションを作成してIndexedDBの基礎を学びたいと考えています。この環境では、順序付きリストを使用するのが難しいです。IndexedDBで順序付きリストを使用する

実装方法が分からない機能は、順序付けされたメモリストを持つことです。

私が最初WebSQLでメモ帳アプリケーションを実装しようとした、と私はこのようなノートを選択することが非常に簡単見つかりました

select * from notes order by position 

、指定した位置にノートを挿入するとき、私が最初にやりました...

update notes set position = position + 1 where position >= insert_position 

...各ノートをシフトして、新しいノートのスペースを位置insert_positionに移動します。

しかし、私はWebSQLが実際には非難されているのを見ました。

IndexedDBでこのような機能を実現する可能性はありますか?上記のようなクイッククエリは適用されないため、IndexedDBなどの環境で順序付きリストを作成する方法を完全に理解していません。

メモとして、IndexedDBに配列を格納することは可能ですが、毎回使用しているレコードが1つしかありません。むしろ、すべてのレコード(各レコードは音符を表す)の順序付けられたリストを持っていて、順序付けを更新できるようにする方法を探しています。

誰かが順序付きリストのIndexedDBの方法で何かを明かすことができますか?

答えて

2

多くのものと同様に、このナッツを分解する方法がいくつかあります。

作成時間に基づいてメモを注文するアプリを作成している場合は、自動インクリメントキーを使用するのと同じくらい簡単です(このフラグはobjectStoreの作成時に指定されています)。 1つはid(別名primaryKey)が1、2番目が2などであることに注意してください。これはデフォルトのkeyPathを使用するため、インデックスを作成せずにカーソルを開くことができます。

時代に応じて変更される可能性のあるノートを注文するには、そのフィールドにインデックスを作成し、addingまたはputtingオブジェクトの場合は必ず指定してください。下限が例えば0のカーソルを開きます(辞書順に並んだキーはこれがすべての文字列の前に来ることを意味します)。上限は開いたままにしておきます。カーソルを使い果たすまで、onsuccessハンドラを1発ずつ順にカーソルを移動し、NULLを返します。event. target.result

「位置」などのフィールドを持っていると思われるかもしれません。これは、上記のように、通常のインデックスとカーソルで完全に実行可能です。アドバイスの1つの注意は、整数ではなく浮動小数点数をpositionにすることです。これは、他の行(position n = ((position 1 + position 2)/2))を変更することなく順序を更新することができます。

+0

ご協力いただきありがとうございます。浮動小数点のアイデアは私には新しく、非常に興味深いようです、ありがとう! – pimvdb

関連する問題