在couchbase lite视图中查询多个键

时间:2015-07-08 09:42:28

标签: android couchbase couchbase-lite

您好我是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()

但结果总是空的。我忽略了什么吗?

2 个答案:

答案 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