couchbase客户端(android)视图返回空索引
我已经编写了一个视图,并通过同步网关将其插入couchbase服务器。当我在couchbase控制台中单击“ShowResults”时,它返回一个文档。此视图是生产视图,而不是开发视图。当我尝试从android应用程序访问此视图时,它返回了一个空索引。 我还尝试在应用程序中编写一个视图。这也返回了一个空索引。我似乎找不到问题所在。任何帮助都将不胜感激。谢谢大家! 这是通过对同步网关的管理端口(:4985)的Rest API调用通过同步网关插入后的视图:-couchbase客户端(android)视图返回空索引,android,couchbase,couchbase-lite,couchbase-view,Android,Couchbase,Couchbase Lite,Couchbase View,我已经编写了一个视图,并通过同步网关将其插入couchbase服务器。当我在couchbase控制台中单击“ShowResults”时,它返回一个文档。此视图是生产视图,而不是开发视图。当我尝试从android应用程序访问此视图时,它返回了一个空索引。 我还尝试在应用程序中编写一个视图。这也返回了一个空索引。我似乎找不到问题所在。任何帮助都将不胜感激。谢谢大家! 这是通过对同步网关的管理端口(:4985)的Rest API调用通过同步网关插入后的视图:- function(doc,meta) {
function(doc,meta) {
var sync = doc._sync;
if (sync === undefined || meta.id.substring(0,6) == "_sync:")
return;
if ((sync.flags & 1) || sync.deleted)
return;
delete doc.sync;
meta.rev = sync.rev;
(function (doc, meta) { if (doc.type != null && doc.type== "ReferenceClass") { emit(doc.type, doc); }}) (doc, meta);
}
这将返回一个类型为=“ReferenceClass”的文档。数据库中只有一个文档具有此类型
这是我在android应用程序中编写的视图:-
com.couchbase.lite.View viewItems = database.getView(String.format("%s/%s", "design_document", "view2"));
viewItems.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
if (document.get("type") != null && document.get("type") == "ReferenceClass")
emitter.emit(document.get("type"), document);
}
}, "1.0");
我使用手机插入了一个“ReferenceClass”类型的文档,因此它应该在CBlite数据库中。但我还没有将其插入到“_local”数据库中
我还尝试通过Id获取文档。这对于从手机插入的文档以及从其他手机插入服务器的文档都很有效
我在map函数后插入了以下代码行:-
System.out.println("************** view index=" + viewItems.dump().toString());
对此,我收到了以下结果:-
I/System.out﹕ ************** view index=[]
我还试着换了衣服
if (document.get("type") != null && document.get("type") == "ReferenceClass")
对
if (document.get("type") != null && document.get("type").equals("ReferenceClass"))
这似乎是我指定为“类型”的属性的问题。我将密钥名称从“type”更改为“type\u doc”,现在查询运行正常。现在,我的map函数如下所示:-
com.couchbase.lite.View viewItems = database.getView(String.format("%s/%s", "design_document", "view2"));
viewItems.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
if (document.get("type_doc") != null && document.get("type_doc") == "ReferenceClass")
emitter.emit(document.get("type_doc"), document);
}
}, "1.0");
com.couchbase.lite.View viewItems=database.getView(String.format(“%s/%s”,“design_document”,“view2”);
setMap(新映射程序(){
@凌驾
公共空心地图(地图文档、发射器){
if(document.get(“type_-doc”)!=null和&document.get(“type_-doc”)=“ReferenceClass”)
emit(document.get(“type_doc”),document);
}
}, "1.0");
我猜它是把“类型”看作JSON或其他类型。我不确定。有人能解释一下细节吗?除了我插入的“type”之外,文档中没有“type”键,但我猜从其他地方读取了错误的“type”值
if (document.get("type") != null && document.get("type").equals("ReferenceClass"))
com.couchbase.lite.View viewItems = database.getView(String.format("%s/%s", "design_document", "view2"));
viewItems.setMap(new Mapper() {
@Override
public void map(Map<String, Object> document, Emitter emitter) {
if (document.get("type_doc") != null && document.get("type_doc") == "ReferenceClass")
emitter.emit(document.get("type_doc"), document);
}
}, "1.0");