我正在嘗試創建junit測試。場景:Couchbase 2.0 Java SDK 1.1 - 同步添加和視圖
- 設置:我增加了兩個JSON文件數據庫
- 測試:我使用的視圖
- 拆解得到這些文件:我刪除這兩個對象
我的觀點:
function (doc, meta) {
if (doc.type && doc.type == "UserConnection") {
emit([doc.providerId, doc.providerUserId], doc.userId);
}
}
這是我的那些文件添加到數據庫中,並確保 「添加」 是同步的:那我加入
public boolean add(String key, Object element) {
String json = gson.toJson(element);
OperationFuture<Boolean> result = couchbaseClient.add(key, 0, json);
return result.get();
}
JSON文件是: {」 「userId」:「1」,「providerId」:「test_pId」,「providerUserId」:「test_pUId」,「type」:「UserConnection」} {「userId」:「2」providerId「test_pId」 providerUserId「:」test_pUId「,」type「:」UserConnection「}
這是我如何調用視圖:
View view = couchbaseClient.getView(DESIGN_DOCUMENT_NAME, VIEW_NAME);
Query query = new Query();
query.setKey(ComplexKey.of("test_pId", "test_pUId"));
ViewResponse viewResponse = couchbaseClient.query(view, query);
問題:
- 測試失敗,因爲從視圖中提取的元素的數目無效。
我的意見:(0-2)
- 有時測試都通過
- 是從視圖中提取的元素數並不一致文件到數據庫而不是調用setUp每次都通過測試
- 根據這個http://www.couchbase.com/docs/couchbase-sdk-java-1.1/create-update-docs.html文檔我將這些json文檔同步添加通過在返回的Future對象上調用get()來調用y。
我的問題:
- 有什麼錯我是如何處理這些數據插入到數據庫後立即取出由視圖數據?有沒有解決這個問題的好習慣?有人能解釋給我,請問我做錯了什麼?
謝謝
達留
除了PersistTo以確保您的磁盤,您還需要使用stale = false調用視圖以確保在將索引返回到應用程序之前更新索引。看看:http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-views-writing-stale.html – 2013-02-27 19:17:29
謝謝!看來這兩者的結合解決了這個問題。 – 2013-03-03 22:04:13