複合キーで IndexedDB カウント メソッドを使用する方法で? 単一の属性をフィルタリングする方法を学びました。ここまでは順調ですが、今度は並べ替えとフィルター処理を同時に行う必要があります。
私のオブジェクト ストアは、次のオブジェクトで満たされています。
os.put({feed_id:1,id:1,title:"foofoo",time:111});
os.put({feed_id:1,id:2,title:"foobar",time:112});
os.put({feed_id:1,id:3,title:"foobaz",time:113});
os.put({feed_id:3,id:1,title:"bazfoo",time:114});
os.put({feed_id:3,id:2,title:"bazbar",time:115});
os.put({feed_id:3,id:3,title:"bazbaz",time:116});
os.put({feed_id:1,id:4,title:"foofoo",time:122});
os.put({feed_id:1,id:5,title:"foobar",time:121});
os.put({feed_id:1,id:6,title:"foobaz",time:120});
os.put({feed_id:3,id:4,title:"bazfoo",time:119});
os.put({feed_id:3,id:5,title:"bazbar",time:118});
os.put({feed_id:3,id:6,title:"bazbaz",time:117});
オブジェクト ストアに 2 つのインデックスを設定しました。1 つ (idx_feedid) には keyPath があり、openCursorfeed_id
を使用して特定のフィード ID を持つすべてのオブジェクトを取得できます。もう 1 つ (idx_ts) には keyPath があり["id","feed_id","time"]
ます。
問題は、idx_feedid の結果を反復すると、タイムスタンプで順序付けせずに結果が得られることです。SQL では簡単に を実行できますがSELECT * FROM feeditems WHERE feed_id=3 ORDER BY time DESC
、IndexedDB ではどうすればよいのでしょうか?
ページネーションを実現するために返される結果を制限するにはどうすればよいですか? 本質的には、MySQL のようなものが必要ですLIMIT 0,10
/ LIMIT 10,10
/...