CouchDBを使用して、HackerNewsが提供する方法でコメントを表示する基本的な方法を実装しようとしています。階層的に並べ替えるだけでなく、ツリーの各レベルも「ポイント」変数で並べ替える必要があります。
アイデアは、ビューが私が除いた順序でそれを返すことを望み、たとえば、それらを取得して正しく順序付けられているように見せるために、多くのAjax呼び出しを行わないことです。
これは私がこれまでに得たものです:
- 各ドキュメントは「コメント」です。
- 各コメントには、
path
すべての親を含む順序付きリストであるプロパティがあります。
たとえば、4つのコメント(_id 、、、1
および)2
があるとします。コメントはの子、コメントはの子、コメントもの子です。データは次のようになります。3
4
2
1
3
2
4
1
{ _id: 1, path: ["1"] },
{ _id: 2, path: ["1", "2"] },
{ _id: 3, path: ["1", "2", "3"] }
{ _id: 4, path: ["1", "4"] }
これは、階層に対して非常にうまく機能します。シンプルなview
ものは、私が望むように注文されたものをすでに返します。
この問題は、ツリーの各「レベル」を個別に注文したい場合に発生します。たとえば、ドキュメント2
と4
同じブランチに属しますが、そのレベルではIDで並べ替えられます。代わりに、パスに追加したい「ポイント」変数に基づいて順序付けてほしいのですが、この変数をどこに追加すれば、希望どおりに機能するのか理解できないようです。
これを行う方法はありますか?「ポイント」変数は時間とともに変化することを考慮してください。