2017-03-27 19 views
0

soのようなcouchbaseでmapreduceビューを作成しようとしています。現在、couchbaseサーバーのビューコードは次のようになっています。JSONオブジェクトをcouchbaseビューからモデルのリストに解析します

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

ここで私は文書の内容を出しています。私は(var rows in result.Rows)に繰り返すとき

ので、私はクラス

serialNumberuldNumberのための取得/設定を持つモデル(ABC)のリストに(JSONで)コンテンツ内の各値を割り当てたい、と assignedDate私はdeserialiにしようと

row.key値は

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

のように見えました私はこれを行うとしたらそう、

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

は私がrow.Key.toString();"cannot convert from 'Couchbase.Views.ViewRow<dynamic>' to 'Newtonsoft.Json.JsonReader"

を得るようにそれをZE、私は'Newtonsoft.Json.Linq.JObject'

の例外エラーが "文字列にcouchbase.views.viewrowを変換することはできません" を取得

私はthisthisを見てきましたが、どちらもうまくいきませんでした。あなたはこのようなEMIT声明行うと

答えて

0

emit(doc.content, null); 

をあなただけのビューキーdoc.contentを作り、行データはnullを残しています。これを試してみてください:

emit(doc.content, doc); 

これは、行の内容を文書内の完全なデータにします。または、row.Idを使用してドキュメントIDを取得し、Read(row.Id)を使用してドキュメントを読み取ることもできます。これは遅くなりますが、ビューに必要な記憶領域は少なくなります。

また、通常、JSONオブジェクトマップをキーに配置しません。通常は、数値や文字列のような単一の値、または値の配列のいずれかです。配列は、ビュー参照のために使いやすくなっています。

関連する問題