# creating the view
var designDocContents =
@"{
""views"" : {
""all_docs"" : {
""map"" : ""function (doc, meta) {\n emit(doc.name, [doc.version, doc.type, doc.date]);\n }""
}
}
}";
var result = _cluster.CreateDesignDocument(_bucketName, "dev_all_docs", designDocContents);
调试时从我的Visual Studio立即窗口:
# trying to get the created view and read values from it
couchbaseClient.GetView("dev_all_docs", "all_docs").GetEnumerator().MoveNext();
false
couchbaseClient.GetView("dev_all_docs", "all_docs").GetEnumerator().MoveNext();
true
正如您所看到的,完全相同的代码行(couchbaseClient.GetView ...)在第一次调用时返回false,在第二次调用时返回true。我在创建视图后尝试添加睡眠,但是没有修复它,所以它似乎不是时间问题。
我发现了一个似乎有点相关的问题: Couchbase .Net client library GetView caching issue 但是问题答案的以下变化也没有解决它:
couchbaseClient.GetView("dev_all_docs", "all_docs").Stale(StaleMode.False);
答案 0 :(得分:1)
我明白了。通过从使用开发视图切换到生产视图来解决该问题。深入了解Couchbase视图文档是关键。 http://docs.couchbase.com/couchbase-manual-2.2/#development-and-production-views
我将代码更改为以下内容:
# creating the view
var designDocContents =
@"{
""views"" : {
""all_docs"" : {
""map"" : ""function (doc, meta) {\n emit(doc.name, [doc.version, doc.type, doc.date]);\n }""
}
}
}";
var result = _cluster.CreateDesignDocument(_bucketName, "all_docs", designDocContents);
在Visual Studio的即时窗口中:
couchbaseClient.GetView("all_docs", "all_docs").GetEnumerator().MoveNext();
true
所以在代码中删除" dev _"视图名称中的前缀起到了作用。