0

私はDojoのdgridを実験しています(これは素晴らしいです!)。サーバー側でNodejs/Mongooseを使用しています。「ログブラウザ」を書きたい:たくさんのログエントリを含む大きなmongodbテーブルがあります。dgridを使用して、1)特定のパラメーターでフィルター処理する2)dgridのネイティブページ付けを使用してページ付けできるようにしたい。

したがって、問題:dojoのJsonRestストアは次のようなリクエストを送信します。

Accept:application/javascript, application/json
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
...
Host:localhost:3000
Range:items=0-24

したがって、問題が発生します。範囲が指定され(実際に実行できるのはそれだけです)、サーバーから受信した内容に応じてクライアント側に表示されます。クライエンド側のJsonRestオブジェクトが「範囲」以外のリクエストを行うことを期待するのは非現実的です。ただし、スキップ/制限がMongooseではうまく機能しないことを認識しています。

MongoDbとNodejsでajaxページネーションを行うための最良の方法は何ですか?

私のアイデアは、dgridをレンダリングして、ユーザーがフィルターを選択できるようにし、ログを楽しくページングできるようにすることでした。しかし、スキップ/制限が問題外であるという事実、私は少しピクルスになっています...

Dgridを完全に捨てて、Dojoストアを使用せずに自分でページ付けを実装する以外に、知恵の真珠はありますか?

メルク。

4

1 に答える 1

2

フロントエンド

dgridのフィルタリングは、dojo EnhancedGridフィルタープラグインの場合ほど機能が充実していないため、おそらくその部分を自分で実装する必要があります。

良いニュースは、グリッドを作成するときに「dgrid/OnDemandGrid」をミックスインするだけでページングを取得できることです。

バックエンド

ドキュメントは、パフォーマンスのための最善の策は、インデックスを使用していくつかのトリックを実行し、それらに基づいてクエリを実行して範囲を取得することであることを示しているようです。

あなたはおそらくすでにこれらを参照していますが、ここにあります。
http://mongoosejs.com/docs/api.html#query_Query-skip
http://docs.mongodb.org/manual/reference/method/cursor.skip/

ログデータは通常シーケンシャルであり、変更されることはめったにないため、ログデータの各行に単調に増加するインデックスを使用し、それらを使用してクエリを実行して、行への適切なオフセットと行数を取得できます。

于 2012-11-29T21:05:10.037 に答える