您好我是couchbase / couchbase-lite的新手,我尝试使用多个键查询视图但没有成功。她是地图功能的外观:
public void map(Map<String, Object> doc, Emitter emitter) {
if (doc.get("type").equals("my_type") {
List<Object> keys = new ArrayList<Object>();
keys.add(doc.get("key_1"));
keys.add(doc.get("key_2"));
emitter.emit(keys, null);
}
}
我的问题是我需要仅使用key_1或key_1和key_2的组合查询视图,如此
List<Object> keys = new ArrayList<Object>();
keys.add(key_1);
if (key_2 != null) keys.add(key_2);
query.setKeys(keys);
results = query.run()
但结果总是空的。我忽略了什么吗?
答案 0 :(得分:1)
两次发射不起作用。如果在setKeys()方法中给出ArrayList,则List中的每个键都与emit中的每个键匹配。如果要匹配两个键,请将键ArrayList添加到另一个List中。然后将其传递给setKeys()方法。像这样,
List<Object> keys = new ArrayList<Object>();
List<Object> allKeys = new ArrayList<Object>();
keys.add(key_1);
if (key_2 != null) keys.add(key_2);
allKeys.add(keys);
query.setKeys(allKeys);
results = query.run();
答案 1 :(得分:0)
这是解决方案,我们需要将密钥添加到另一个List<Object>
https://github.com/couchbase/couchbase-lite-android/issues/740