我正在尝试创建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