2012-09-18 28 views
0

這是我從couchbase中檢索評論列表的代碼。設計文檔名稱是「任務」,視圖名稱是:「GetComments」。如何使用迭代檢索couchbase查看結果?

public List<CommentsVO> GetComments(string TaskID, int LastCommentID, int totalCommentCount) 
     { 

      int startCount = LastCommentID - 1; 

      int endCount = startCount - 19; 
      int remainingCount = totalCommentCount - endCount; 
      if (endCount < 0) 
      { 
       endCount = 0;// totalCommentCount - remainingCount; 
      } 


      IView<CommentsVO> results = oCouchbase.GetView<CommentsVO>("Task", "GetComments"); 

      results.StartKey(new object[] { TaskID, startCount }).EndKey(new object[] { TaskID, endCount }); 

      if (results != null) 
      { 
       List<CommentsVO> resultlist = new List<CommentsVO>(); 

       foreach (CommentsVO vo in results)//Here it is not entering inside the loop... Am i missing anything in this condition 
       { 
        resultlist.Add(vo); 
       } 

       resultlist.Reverse(); 
       return resultlist; 
      } 

      return null; 

     } 

我CommentsVo代碼:

public class CommentsVO 
    { 
     public CommentsVO() 
     { 
      CommentedOn = Convert.ToString(DateTime.Now); 
      IsActive = "1"; 
     } 
     [JsonIgnore] 
     public string TaskID { get; set; } 

     [JsonProperty("commented_user_id")] 
     public string CommentedUserID { get; set; } 

     [JsonProperty("commented_user_name")] 
     public string CommentedUserName { get; set; } 

     [JsonProperty("comment_description")] 
     public string CommentDescription { get; set; } 

     [JsonProperty("commented_on")] 
     public string CommentedOn { get; set; } 

     [JsonProperty("is_active")] 
     public string IsActive { get; set; } 

     [JsonProperty("seq")] 
     public string Sequence { get; set; } 
    } 

我couchbase視圖代碼是:

function(doc) { 
    for(var i in doc.comments) { 
     emit([doc._id,doc.comments[i].seq],doc.comments[i]); 
    } 
} 

我已經不使用startkey和endkey它的迭代,但使用startkey和endkey當我試圖嘗試它不會進入循環內..

請幫助我..

回答

0

使用組合鍵時,您需要在StartKey/EndKey中指定一組鍵。在你的代碼中,你實際上是用第二次調用StarKey和EndKey來覆蓋密鑰。

因此,像:

results.StartKey(new object[] { TaskId, startCount }).EndKey(new object[] { TaskId, endCount }); 
+0

我已經編輯我的代碼,每U現在suggested..But它拋出一個異常,如「遠程服務器返回錯誤:(400)錯誤的請求。」 – Xavier