【发布时间】:2018-05-02 02:58:21
【问题描述】:
我没有设法从 CouchDB 中提取复制数据。
我使用 CouchDB 来存储我的文档。
CouchDB 版本:Apache CouchDB 1.6.1
Couchbase Lite:Couchbase Lite 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 Lite 作为我的 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,则 App 可以从 CouchDB 复制员工文档。会不会是 req.query.employeeId 与 Couchbase 和 CouchDB 不兼容?
我可以知道我做错了什么吗?
【问题讨论】:
标签: android couchdb couchbase database-replication couchbase-lite