使用couchbase时输入错误

时间:2012-09-10 12:43:48

标签: c# types casting error-handling couchbase

我的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);
}

我找不到合适的类型转换。请帮助我解决这个问题

2 个答案:

答案 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字符串。如果您对我刚才提到的任何问题有任何疑问,请随时编辑您的问题以包含您的商店运营和地图/缩小视图代码。