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 作为下一页的开始键。

如果您需要完全分页,您可以使用最后一个策略实现转到第一页、转到最后一页和转到下一页/上一页,并在适当的时候使用“降序”来反转您的搜索顺序。但是,您不能实现转到任意页面。要实现到任意页面的跳转,您必须在内部跳过所有中间页面。

于 2012-12-18T10:17:53.480 回答