1

アプリケーションにcouchdbとASP.NETを使用しています。ページの読み込み時に完全に読み込むとパフォーマンスが低下する大量のデータがあるため、「リバービュー」のようにする必要があります。

下にスクロールすると、ajax 呼び出しで次の 12 個の結果セットが取得され、ページに表示されます。これは SQL で可能ですが、ソファ データベースで行う必要があります。私はそれをグーグルで検索しましたが、結果が見つかりませんでした。

これは C# と SQL のコードです。私はcouchdbで同じことをする必要があります。

public string GetData()
{
RecordCount = RecordCount + 10;
string Sql = "SELECT Title, DateCreated, Slug FROM be_Posts ORDER BY Title OFFSET " + FirstCount + " ROWS FETCH NEXT 10 ROWS ONLY";
FirstCount = RecordCount;
StringBuilder sb = new StringBuilder();
dt = new DataTable();
da = new SqlCeDataAdapter(Sql, con);
con.Open();
da.Fill(dt);
DataView dv = dt.DefaultView;
foreach (DataRowView row in dv)
{
sb.AppendFormat("<p>Post Title" + " <strong>" + row["Title"] + "</strong>");
sb.AppendFormat("<p>Post Date" + " <strong>" + row["DateCreated"] + "</strong>");
sb.AppendFormat("<p>Slug" + " <strong>" + row["Slug"] + "</strong>");
sb.AppendFormat("<hr/>");
}
sb.AppendFormat("<divstyle='height:15px;'></div>");
con.Close();
return sb.ToString();
}
4

2 に答える 2

1

結果を含むビューの GET に STARTKEY、ENDKEY、および LIMIT URL クエリ引数を使用して、同様の効果を得ることができます。

クエリ パラメータに関するドキュメント

于 2012-12-17T11:23:38.623 に答える
0

このレシピを見るべきだと思います: http://guide.couchdb.org/draft/recipes.html#pagination

データのセットが小さい場合は、'limit' と 'skip' を使用しても問題ありません。それ以外の場合は、cocuhdb がドキュメントのセット全体を内部的に取得し、最初のページだけをスキップするため、非常に遅くなります。

秘訣は、'startkey' と 'endkey' を使用して、常に N+1 個のドキュメントを取得することです。これは、ビューで最初の N 個のドキュメントを使用し、次のページの開始キーとして「next_startkey_docid」を持つドキュメント N+1 を使用することを意味します。

完全なページネーションが必要な場合は、最後の戦略で最初のページに移動、最後のページに移動、次/前のページに移動し、適切な場合は「降順」を使用して検索の順序を逆にすることができます。ただし、任意のページに goto を実装することはできません。任意のページへのジャンプを実装するには、すべての中間ページを内部的にスキップする必要があります。

于 2012-12-18T10:17:53.480 に答える