2

我有一个包含 5 个文档的简单数据桶,并使用 CSharp 驱动程序通过 Web 应用程序添加数据。前任:{'key':'Version', 'value': '1.0'}

当我从 UI 或 Couchbase 控制台请求返回整个列表时,我没有在第一次获得所有结果,我总是在添加新文档后获得第二次请求的结果。这是沙发底座视图的默认行为吗?我知道它在后台使用内存缓存。

如果这是默认行为,那么我该如何处理这种情况?因为每个应用程序都需要实时数据,还是我在这里做错了什么?


我刚刚注意到问题出在生产视图上,上述问题仅发生在生产视图中,不在开发视图中,产品视图与开发视图的工作方式不同吗?

4

2 回答 2

3

添加文档通常是一个异步操作。这意味着当您的函数调用返回时(在您的语言特定的 SDK 上),文档并没有真正插入到 Couchbase 中。它更像是一个插入请求。

我对 CSharpDriver 知之甚少,但我可以给你一个关于 Couchbase-SDK for Java 的例子。您将不得不搜索一下将以下内容映射到您的语言。一个典型的例子是:

//Send a **request** to insert, typically spawns a new thread to poll for result.
final OperationFuture<Boolean> setOp = m_couchbaseClient.set(sKey, 0, sValue);

// More processing

//Wait on insertion. Use <FutureObject>.get()
try {
    return setOp.get().booleanValue();
    //when the above call returns we can be sure that insertion has happened/failed.
} catch (InterruptedException e) {
} catch (ExecutionException e) {
}
于 2013-05-16T18:11:44.377 回答
2

在视图选项中尝试“stale=false”。这是一些关于索引更新的文档

于 2013-05-21T16:51:50.707 回答