在 CouchBase Lite 中 运行 map reduce 时出错
error when running map reduce in CouchBase Lite
我正在尝试在 CouchBase Lite 上使用 map-reduce。我有文件,它们正在被引导。我想要的所有文件都在 Couchbase Lite 中。但是当我尝试对它们进行 运行 map-reduce 时,出现以下错误
com.couchbase.lite.CouchbaseLiteException: Error when calling map block of view 'calendar', Status: 593 (HTTP 500 Application callback block failed)
下面是我的 map reduce 函数
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());
}
正如 borrrden 在上面的评论中所说,Application callback block failed
意味着您的地图函数抛出了异常。使用调试器找出它是什么。
一个可能的可能性是您数据库中的一个文档没有 date
属性。在这种情况下,您的映射函数会将 null
传递给 emit
的第一个 (key
) 参数,这是一个无效参数。
我正在尝试在 CouchBase Lite 上使用 map-reduce。我有文件,它们正在被引导。我想要的所有文件都在 Couchbase Lite 中。但是当我尝试对它们进行 运行 map-reduce 时,出现以下错误
com.couchbase.lite.CouchbaseLiteException: Error when calling map block of view 'calendar', Status: 593 (HTTP 500 Application callback block failed)
下面是我的 map reduce 函数
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());
}
正如 borrrden 在上面的评论中所说,Application callback block failed
意味着您的地图函数抛出了异常。使用调试器找出它是什么。
一个可能的可能性是您数据库中的一个文档没有 date
属性。在这种情况下,您的映射函数会将 null
传递给 emit
的第一个 (key
) 参数,这是一个无效参数。