我沒有設法從CouchDB中提取複製數據。Couchbase Lite從CouchDB中過濾複製
我正在使用CouchDB用於我的文檔存儲。
CouchDB的版本:的Apache CouchDB的1.6.1
Couchbase精簡版:Couchbase精簡版1.4.0
下面是我的樣本數據:
{
"_id": "ab33deeb074523e3c63c216b8c2952a8",
"_rev": "6-e196bfb6aca85492e4f96f3af6fd1ee2",
"type": "employee",
"employee": {
"employeeId": "1",
"employeeName": "Test"
}
}
在CouchDB的,我有創建了我自己的設計過濾器:
{
"_id": "_design/employee",
"_rev": "35-00f59706402452291d30c3fb6e9a5356",
"filters": {
"byEmployeeId": "function(doc, req) {
if(doc.type != 'employee') {
return false;
}
if(doc.employee.employeeId == req.query.employeeId) {
return true;
} else {
return false;
}
}"
}
}
在另一方面,我使用Couchbase精簡版爲我的Android手機項目複製拉動員工數據:
Replication pull = this.getCouchbaseUtility().getDatabase().createPullReplication(
new URL("http://localhost:5984/testdb")
);
pull.setAuthenticator(authenticator);
pull.setContinuous(false);
pull.setFilter("employee/byEmployeeId");
Map<String, Object> params = new HashMap<>();
params.put("employeeId", "1");
pull.setFilterParams(params);
pull.addChangeListener(new Replication.ChangeListener() {
@Override
public void changed(Replication.ChangeEvent event) {
System.out.println(event.getStatus());
}
});
pull.stop();
pull.start();
應用程序沒有錯誤的運行,但沒有成功將數據複製到移動Couchbase存儲。
如果我將設計過濾器更改爲始終爲true,則應用程序可以從CouchDB複製員工文檔。難道是req.query.employeeId與不兼容Couchbase和CouchDB?
我可以知道我做錯了嗎?
可能的重複:https://stackoverflow.com/questions/47220517/android-couchbase-lite-pull-with-filter-replication-setfilter –