2017-03-27 1 views
0

so과 같은 couchbase에서 mapreduce보기를 만들려고합니다. 지금 couchbase 서버의 내 뷰 코드는 다음과 같습니다.JSON 객체를 couchbase보기에서 모델 목록으로 구문 분석

function(doc, meta) 
{ 
    emit(doc.content,null); 
} 

여기에서 나는 문서의 내용을 방출하고 있습니다. 내가 (var rows in result.Rows)에서 반복 할 때

그래서, 나는 수업

serialNumber, uldNumber에 대한 GET/SET이있는 모델 (ABC)의 목록 (JSON)에 내용의 각 값을 할당 할, 그리고 assignedDate

row.key 값은 내가 deseriali하려고하면

{{ 
    "serialNumber": "1", 
    "uldNumber": "33", 
    "assignedDate": "2033-02-17T09:10:38" 
}} 

내 수업이

public class abc 
    { 
     //[JsonProperty("serialNumber")] 
     public string SerialNumber { get; set; } 

     //[JsonProperty("uldNumber")] 
     public string UldNumber { get; set; } 

     //[JsonProperty("assignedDate")] 
     public DateTime AssignedDate { get; set; } 
    } 

처럼 보인다 내가

"를 문자열로 couchbase.views.viewrow을 변환 할 수 없습니다" 'Newtonsoft.Json.Linq.JObject'

의 예외 오류가, 내가, row.Key.toString();을 이렇게한다면 내가 "cannot convert from 'Couchbase.Views.ViewRow<dynamic>' to 'Newtonsoft.Json.JsonReader"

을 얻을

JsonSerializer js = new JsonSerializer();      
_abcList.Add(js.Deserialize<dynamic[]>(row)); 

, 그래서처럼 '제

나는 thisthis을 보았지만 둘 다 작동하지 않았습니다.

답변

0

이 같은 발광 문을 수행 할 때 :

emit(doc.content, null); 

당신은 단지보기 키 doc.content을하고, 행 데이터는 null를 떠난다. 시도해보십시오.

emit(doc.content, doc); 

이렇게하면 행 내용이 문서의 전체 데이터가됩니다. 또는 row.Id를 사용하여 문서 ID를 가져온 다음 Read (row.Id)를 사용하여 문서를 읽을 수 있습니다. 이 속도는 느리지 만보기에 필요한 저장 공간이 적습니다.

또한 일반적으로 키에 JSON 객체 맵을 두지 않습니다. 대개 숫자 또는 문자열과 같은 단일 값이거나 값의 배열입니다. 배열은 뷰 검색에 사용하기가 더 쉽습니다.