Как получить данные по свойству в Couchbase Lite?

Мои документы имеют свойство docType, которое разделяет их в зависимости от назначения каждого типа, в конкретном шаблоне случая или аудита. Однако, когда я делаю следующее:

document.getProperty("docType").equals("template");
document.getProperty("docType").equals("audit");

Результаты их всегда одинаковы, он возвращает каждый раз, когда все документы хранятся без фильтрации их по docType.

Ниже вы можете проверить функцию запроса.

public static Query getData(Database database, final String type) {
    View view = database.getView("data");
    if (view.getMap() == null) {
        view.setMap(new Mapper() {
            @Override
            public void map(Map<String, Object> document, Emitter emitter) {
                if(String.valueOf(document.get("docType")).equals(type)){
                    emitter.emit(document.get("_id"), null);
                }
            }
        }, "4");
    }
    return view.createQuery();
}

Любой намек?

1 ответ

Решение

Это недопустимый способ сделать это. Ваша функция просмотра должна быть чистой (она не может ссылаться на внешнее состояние, такое как "тип"). После того, как это будет создано, вы можете запросить его о том, что вы хотите, установив начальные и конечные ключи или просто набор ключей в целом для фильтрации.

Другие вопросы по тегам