我正在运行 couchbase server 2.0(开发预览版 4)并使用 .net 客户端库版本 1.2。
当我将一些文档(json)添加到我的数据库中,然后在几秒钟内(少于 10 秒)我尝试通过 GetView 通过 .net 客户端库获取此文档,它总是在第一次查询时返回旧值。只有在第二个查询它返回实际值。
当我通过 REST api 执行相同的查询时,它返回实际值。
任何人都可以提供一些有关此的信息吗?
Couchbase 中视图的默认行为是增量更新视图的索引。它正在请求一个实际触发增量更新的视图。换句话说,当你第一次请求视图时,你触发了服务器上的索引更新(只有新文档需要索引)。因此,在您第二次调用 GetVew 时,新文档已被编入索引。
这样,Couchbase 视图最终是一致的。如果陈旧的读取不适合或不适合您的情况,您可以在请求视图并修改默认行为时使用 Stale fluent 方法。
因此,要在获得结果之前强制更新视图:
var view = client.GetView("beers", "by_name").Stale(StaleMode.False);
更多信息可在http://www.couchbase.com/docs/couchbase-sdk-net-1.2/api-reference-view.html获得。
- 约翰