. net SDK GetView在第一次调用时返回空结果
本文关键字:返回 结果 调用 第一次 SDK GetView net | 更新日期: 2023-09-27 18:11:04
# 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 Immediate窗口中调试:
# 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客户端库GetView缓存问题但是下面对问题答案的修改也没有解决这个问题:
couchbaseClient.GetView("dev_all_docs", "all_docs").Stale(StaleMode.False);
我明白了。通过从使用开发视图切换到使用生产视图,这个问题得到了解决。仔细查看Couchbase视图文档是关键。http://docs.couchbase.com/couchbase手册- 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_"前缀就成功了。