我正在为我的应用程序使用couchdb和ASP.NET。如果我在页面加载时完全加载它,我会有一大堆数据会破坏我的性能,所以我需要像“河景”那样做。
如果我向下滚动我的ajax调用应该获取下一组12个结果以在我的页面中查看。这在SQL中是可能的,而我需要在沙发数据库中进行。我用Google搜索,但我找不到任何结果。
这是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();
}
答案 0 :(得分:1)
您可以使用STARTKEY,ENDKEY和LIMIT URL查询参数来查看带有结果的视图GET,以产生类似的效果。
答案 1 :(得分:0)
我认为你应该看看这个食谱:http://guide.couchdb.org/draft/recipes.html#pagination
如果您有一小组数据,使用'limit'和'skip'就可以了,否则它会非常慢,因为cocuhdb无论如何都会在内部检索整个文档集,只是跳过第一页。
诀窍是使用'startkey'和'endkey'并始终检索N + 1个文档。这意味着您在视图中使用前N个文档,并使用文档N + 1和“next_startkey_docid”作为下一页的开始键。
如果你需要完整的分页,你可以实现转到第一页,转到最后一页并转到下一页/上一页的最后一个策略,并在适当时使用'降序'来反转你的sesarch的顺序。但是,您无法实现转到任意页面。要实现跳转到任意页面,您必须在内部跳过所有中间页面。