我将视图定义为:
function(doc)
{
if (doc.type="user")
{
emit([doc.uid, doc.groupid], null);
}
}
在Java代码中,我写了
List<String> keys = new ArrayList<String>();
keys.add("93");
keys.add("23");
ViewQuery q = createQuery("getProfileInfo").descending(true).keys(keys).includeDocs(true);
ViewResult vr = db.queryView(q);
List<Row> rows = vr.getRows();
for (Row row : rows) {
System.out.println("Key--->"+row.getKey());
System.out.println("Value--->"+key);
}
我的代码总是返回0行 - 我错过了什么?
答案 0 :(得分:1)
我怀疑你的类型不匹配,但如果没有看到视图的行,就无法确定。所以,如果我错了,请在您的视图中发布一个示例行。
'keys'在发送到CouchDB之前被编码为JSON。你要添加两个字符串 - “93”和“23” - 但我猜它们实际上是文件中的整数。在JSON中,字符串和整数的编码方式不同。一对字符串被编码为[“93”,“23”],一对整数被编码为[93,23]。
如果我是正确的,那么'keys'应该被定义为List&lt; Integer&gt; (或者用Java看起来。)
答案 1 :(得分:1)
将代码修改为
ComplexKey keys = ComplexKey.of(“93”,”23”);
ViewQuery q = createQuery("getProfileInfo").descending(true).key(keys).includeDocs(true);
ViewResult vr = db.queryView(q);
List<Row> rows = vr.getRows();
for (Row row : rows) {
System.out.println("Key--->"+row.getKey());
System.out.println("Value--->"+row.getValue());
}
现在工作正常。