我的couchbase数据桶中有一个名为“TotalPosts”的视图。设计文档名称为“Statistics”。
这是我的代码。我正在这里建立联系..
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
}
无法将类型'Couchbase.IView'隐式转换为'System.Collections.Generic.IEnumerable'。存在显式转换(您是否错过了演员?)
这是我的地图代码:
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 :(得分:0)
我无法声明Couchbase的任何知识,但错误消息表明您可以执行显式转换。你有没有尝试过为回归做演员?
return (Newtonsoft.Json.Linq.JToken)results;
答案 1 :(得分: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操作中的值?如果您是,那么它们将不会在您的视图中可用,因为在视图中只能使用有效的JSON字符串。如果您对我刚才提到的任何问题有任何疑问,请随时编辑您的问题以包含您的商店运营和地图/缩小视图代码。