2012-09-10 4 views
1

내 couchbase 데이터 버킷에 "TotalPosts"라는보기가 있습니다. 디자인 문서 이름은 "통계"입니다.couchbase 사용 중 캐스팅 오류가 발생했습니다.

이것은 내 코드입니다. 나는 여기에 연결을 .. 확립하고

protected void Page_Load(object sender, EventArgs e) 
     { 
      try 
       { 
       var client= new CouchbaseClient(); 
       Tasks objTasks = new Tasks(); 
     foreach (Newtonsoft.Json.Linq.JToken jt in objTasks.GetAllStatistics()) 
     { 
      if (jt["key"].ToString() == "Total") 
      { 
       dt.Rows[0]["Value"] = jt["value"].ToString(); 
      } 
      if (jt["key"].ToString() == "Open") 
      { 
       dt.Rows[1]["Value"] = jt["value"].ToString(); 
      } 
      if (jt["key"].ToString() == "Wah") 
      { 
       dt.Rows[2]["Value"] = jt["value"].ToString(); 
      } 

     } 

이 내 GetAllStatistics 함수 정의 코드 :

public IEnumerable<Newtonsoft.Json.Linq.JToken> GetAllStatistics() 
     { 

      var results = oCouchbase.GetView("Statistics", "TotalPosts"); 
      return results;// I am getting the following error in this line 
     } 

암시 'System.Collections.Generic.IEnumerable'에 유형 'Couchbase.IView을'변환 할 수 없습니다 . 명시 적 변환이 존재한다 (당신은 캐스트를 누락?)

이 내지도 코드 :

function(doc) { 
emit("Total", 1); 
    emit("TotalParticipants", doc.participants.length); 
    if(doc.status == "1"){ 
     emit("Open", 1); 
    } else if(doc.status == "2") { 
     emit("Wah", parseInt(doc.wah_points)); 
    } 
} 

이 내 감소 코드 :

function (key, values, rereduce) { 
    return sum(values); 
} 

내가 적절한 타입 캐스팅을 찾을 수 없습니다 . 이번 호에서 친절하게 도와주세요

답변

0

Couchbase에 대한 지식을 주장 할 수는 없지만 오류 메시지는 사용자가 명시 적 캐스트를 수행 할 수 있음을 나타냅니다. 당신은 당신의 반환을 위해 캐스트를 해본 적이 있습니까?

return (Newtonsoft.Json.Linq.JToken)results; 
0

GetView의 일반 버전은 IViewRow의 열거 가능한 목록을 반환합니다. 그래서 그 대신, 나는 이런 식으로 GetAllStatistics 방법을 변경하는 것이 좋습니다 : 그대로

public IEnumerable<Newtonsoft.Json.Linq.JToken> GetAllStatistics() 
{ 
    var results = oCouchbase.GetView("Statistics", "TotalPosts"); 
    foreach(var row in results) 
    { 
     yield return oCouchbase.Get<Newtonsoft.Json.Linq.JToken>(row.ItemId); 
    } 
} 

는 그런 다음 foreach 루프가 작동합니다. 그러나 내가 가진 질문은 귀하의 문서가 어떻게 생겼는지입니다. JToken 인스턴스를 Store 작업의 값으로 serialize 하시겠습니까? 그렇다면 유효한 JSON 문자열 만보기에서 사용할 수 있으므로보기에서 사용할 수 없습니다. 방금 언급 한 내용에 대해 궁금한 점이 있으면 언제든지 상점 운영 및지도/축소보기 코드를 포함하도록 질문을 편집하십시오.

+0

지도를 포함시키고 코드를 줄였습니다 .. 친절하게 확인하십시오. 위에서 언급 한 방법을 시도했지만 예외가 발생했습니다 "개체 참조가 개체의 인스턴스로 설정되지 않았습니다." – Xavier

관련 문제