0

这是我从 couchbase 中检索评论列表的代码。设计文档名称为“Task”,视图名称为:“GetComments”。

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; }
    }

我的沙发床视图代码是:

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

我尝试过不使用 startkey 和 endkey 进行迭代,但是当我尝试使用 startkey 和 endkey 时,它没有进入循环内部。

请帮帮我..

4

1 回答 1

0

使用复合键时,您将在 StartKey/EndKey 中指定一个键数组。在您的代码中,您实际上是通过第二次调用 StarKey 和 EndKey 来覆盖密钥。

所以像:

results.StartKey(new object[] { TaskId, startCount }).EndKey(new object[] { TaskId, endCount });
于 2012-09-18T15:08:52.807 回答