在 couchDB 上使用过滤器不起作用
Using filters on couchDB does not work
我正在使用 CouchDB
CouchBase lite
和 Android
的项目中工作。
我想使用 filter 函数,所以我在服务器端做 :
{
"_id": "_design/filters",
"_rev": "xxxxxxxxxxxxxxxx",
"filters": {
"master": "function(doc, req) { if(true==doc.ismaster) { return true; } else { return false; }}",
"work": "function(doc, req) { if(true!=doc.ismaster) { return true; } else { return false; }}",
"workdata": "function(doc, req){if (true==doc.ismaster){return false;}if (req.query.device_num==doc.device_num){return true;}if (doc.type=='field_order'){return true;}if (req.query.device_num=='20' || req.query.device_num=='21' || req.query.device_num=='22' || req.query.device_num=='23'){return true;}return false;}"
}
}
在 Android
我正在做 :
pullwork = work.createPullReplication(url);
pullwork.setAuthenticator(auth);
if (PreferenceManager.getTabletNumber() > 80 && PreferenceManager.getTabletNumber() < 90) {
pullwork.setFilter("filters/work");
}else {
pullwork.setFilter("filters/workdata");
但它并没有像我预期的那样工作,我总是只得到主复制,而不是工作复制或工作数据复制。
知道为什么吗?
目前不支持过滤功能。请参阅 Couchbase Lite 文档中的 this section。 (这是几周前才更新的,如果您看到旧版本,我们深表歉意。)
您可能还想看看 this GitHub issue。您可以找到有关不支持它的原因的更多详细信息。从本质上讲,现在 CouchDB 文档没有充分描述实现兼容性所需的条件。
我正在使用 CouchDB
CouchBase lite
和 Android
的项目中工作。
我想使用 filter 函数,所以我在服务器端做 :
{
"_id": "_design/filters",
"_rev": "xxxxxxxxxxxxxxxx",
"filters": {
"master": "function(doc, req) { if(true==doc.ismaster) { return true; } else { return false; }}",
"work": "function(doc, req) { if(true!=doc.ismaster) { return true; } else { return false; }}",
"workdata": "function(doc, req){if (true==doc.ismaster){return false;}if (req.query.device_num==doc.device_num){return true;}if (doc.type=='field_order'){return true;}if (req.query.device_num=='20' || req.query.device_num=='21' || req.query.device_num=='22' || req.query.device_num=='23'){return true;}return false;}"
}
}
在 Android
我正在做 :
pullwork = work.createPullReplication(url);
pullwork.setAuthenticator(auth);
if (PreferenceManager.getTabletNumber() > 80 && PreferenceManager.getTabletNumber() < 90) {
pullwork.setFilter("filters/work");
}else {
pullwork.setFilter("filters/workdata");
但它并没有像我预期的那样工作,我总是只得到主复制,而不是工作复制或工作数据复制。
知道为什么吗?
目前不支持过滤功能。请参阅 Couchbase Lite 文档中的 this section。 (这是几周前才更新的,如果您看到旧版本,我们深表歉意。)
您可能还想看看 this GitHub issue。您可以找到有关不支持它的原因的更多详细信息。从本质上讲,现在 CouchDB 文档没有充分描述实现兼容性所需的条件。