[英]Type casting error while using couchbase
我的ouchbase數據存儲區中有一個名為“ TotalPosts”的視圖。 設計文檔名稱為“統計”。
這是我的代碼。 我正在這里建立連接。
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);
}
我找不到合適的類型轉換。 請在這個問題上幫助我
我無法聲明對Couchbase的任何了解,但是錯誤消息表明您可以執行顯式強制轉換。 您是否嘗試過為回報做演員?
return (Newtonsoft.Json.Linq.JToken)results;
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字符串。 如果您對我剛才提到的任何問題有任何疑問,請隨時編輯您的問題以包括您的商店操作和地圖/縮小視圖代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.