ошибка при запуске уменьшения карты в CouchBase Lite

Я пытаюсь использовать уменьшение карты на CouchBase Lite. У меня есть документы, и они направляются. Все документы, которые я хочу, приходят на Couchbase Lite. Но когда я пытаюсь запустить на них map-reduce, я получаю следующую ошибку

com.couchbase.lite.CouchbaseLiteException: Error when calling map block of view 'calendar', Status: 593 (HTTP 500 Application callback block failed)

Ниже моя функция уменьшения карты

private View createView(Database database){ View calendarView = database.getView("calendar"); calendarView.setMap(new Mapper() { @Override public void map(Map<String, Object> document, Emitter emitter) { emitter.emit((long) document.get("date"),(long) document.get("cost")); } },"2"); return calendarView; }

и Ниже приведена часть main, где я вызываю представление и запрашиваю его.

View calendarView = createView(database); Query query = database.getView("calendar").createQuery(); query.setStartKey(1472467249448l); query.setEndKey(1472553649449l); QueryEnumerator result = null; try { result = query.run(); } catch (CouchbaseLiteException e) { e.printStackTrace(); } for (Iterator<QueryRow> it = result; it.hasNext(); ) { QueryRow row = it.next(); Log.d(TAG, row.getValue().toString()); }


person Legendary_Hunter    schedule 23.05.2016    source источник
comment
Это означает, что внутри вашей функции карты генерируется исключение. Возможно, происходит недопустимый бросок? Я знаю, что это Java (правильно?), но по моему опыту работы с C# вы не можете напрямую преобразовать объект в long, если фактическое значение равно int, ulong и т. д.   -  person borrrden    schedule 28.05.2016


Ответы (1)


Как сказал borrrden в комментарии выше, Application callback block failed означает, что ваша функция карты выдала исключение. Используйте отладчик, чтобы узнать, что это такое.

Скорее всего, один из документов в вашей базе данных не имеет свойства date. В этом случае ваша функция карты будет передавать null первому (key) параметру emit, что является недопустимым аргументом.

person Jens Alfke    schedule 06.06.2016