在couchDB上我有以下视图:
function(doc) {
if(doc._id === 'countryMobileNumberCodes') {
Object.keys(doc.dictionary).forEach(function(k, i) {
emit(k, doc.dictionary[k]);
});
}
}
这会产生以下结果:
{"total_rows":2,"offset":0,"rows":[
{"id":"countryMobileNumberCodes","key":"1","value":"+265"},
{"id":"countryMobileNumberCodes","key":"2","value":"+27"}
]}
Android上的这个相同视图(使用couchbase-lite-android 1.2.1)不会发出任何行 . 但是,如果我要将视图更改为:
function(doc) {
if(doc._id === 'countryMobileNumberCodes') {
emit(doc._id, doc.dictionary);
}
}
然后我从couchbase-lite获得结果(因此文档肯定存在于移动设备上) .
CouchDB是否以不同于couchbase-lite的方式实现了MapReduce?
我已经看到了couchbase-lite和CouchDB 100%兼容的事实,但事实并非如此(Couchbase-lite and CouchDB) .
1 回答
大概你正在使用Couchbase Lite 's REST API, probably within PhoneGap or Cordova. It looks as though the JavaScript interpreter in that container doesn' t支持
Object.keys
或foreach()
. 您可能需要仅使用较旧的JavaScript功能重写 Map 并减少功能 .(我的JS非常生疏,所以我无法告诉你这些API的语言版本是什么 . 它们也可能不是内置的,但是为了方便起见,它们是CouchDB在其JS上下文中包含的库的一部分 . )