Запросить несколько ключей в облегченном представлении Couchbase

Привет, я новичок в 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()

Однако результаты всегда пусты. Я ничего не упускаю из виду?


person Macs    schedule 08.07.2015    source источник


Ответы (2)


Два выброса не работают. Если вы задаете ArrayList в методе setKeys(), каждый ключ в списке соответствует каждому ключу в emit. Если вы хотите сопоставить два ключа, добавьте ключи ArrayList в другой список. Затем передайте его методу 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();
person Harshitha Palihawadana    schedule 18.06.2017

Это решение. Нам нужно добавить ключи в другой List<Object> https://github.com/couchbase/couchbase-lite-android/issues/740

person Sivailango    schedule 05.01.2016