Couchbase视图结果不会返回新添加的文档

时间:2013-05-16 17:53:42

标签: couchbase

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

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

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


我刚刚注意到问题出在生产视图上,上面提到的问题只发生在生产视图不在开发视图中,prod视图与dev的工作方式不同吗?

2 个答案:

答案 0 :(得分: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) {
}

答案 1 :(得分:2)

在视图选项中尝试'stale = false'。这是some documentation about index updates