我正在尝试在像so这样的couchbase中创建mapreduce视图。现在我在couchbase服务器中的视图代码如下所示,
function(doc, meta)
{
emit(doc.content,null);
}
我发出文件的内容。
所以当我在(var rows in result.Rows)
中进行迭代时,我希望将内容中的每个值(以JSON格式)分配给模型(abc)的列表,该模型具有serialNumber
的get / set,{ {1}},以及
uldNumber
row.key值有
assignedDate
我的班级看起来像
{{
"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));
如果我要执行此操作"cannot convert from 'Couchbase.Views.ViewRow<dynamic>' to 'Newtonsoft.Json.JsonReader"
,我会收到row.Key.toString();
的异常错误
“无法将couchbase.views.viewrow转换为字符串”
答案 0 :(得分:0)
当您执行这样的emit语句时:
emit(doc.content, null);
您只是将视图键设为doc.content,并将行数据保留为null。你可以试试这个:
emit(doc.content, doc);
这将使行内容成为文档中的完整数据。或者,您可以使用row.Id获取文档ID并使用Read(row.Id)来读取文档。这个速度较慢,但视图使用的存储空间较少。
此外,您通常不会在密钥中放置JSON对象映射。通常它可以是单个值,如数字或字符串,也可以是值数组。数组更易于用于视图查找。