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

私のcouchbaseビューコードは次のとおりです。

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 への 2 回目の呼び出しで実際にキーを上書きしています。

次のようなものです:

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