我有带有pouchdb和couchdb的离子应用程序。我在ouchdb中写了过滤器文档,用于pouchdb中的同步文档。它将完美运行。如果更改了ouchdb中的过滤器功能,则过滤器将无法正常工作。
我的beddb有以下文件
员工
{
"_id": "employee_2_073489FC-786E-4843-BD3F-B7E191BB532D",
"_rev": "1-f9f43e1416744675ac14c9f3f7323598",
"data": {
"name": "prabu1",
"empid": "2",
"type": "employee"
}
}
部门
{
"_id": "department_2_DD6D808A-57A8-22A4-A5FF-A610F50AC678",
"_rev": "2-99fde11786d64ef9928ddca590998588",
"data": {
"name": "ios",
"deptid": "1",
"type": "department"
}
}
这是我在沙发上的过滤器文档(设计文档)
{
"_id": "_design/live_filter",
"_rev": "6-d02296cc19f98676cb674339e8563d69",
"language": "javascript",
"filters": {
"live_filter": "function(doc) { if (doc._id === '_design/live_filter') { return true; } else if (doc.data) { if (doc['data'].type === 'employee') { return true; } else { return false; } } else { return false; } } "
}
}
在离子应用中同步代码
var opt = {
live: true,
retry: true,
filter: "live_filter",
include_docs: true
}
this.db.sync(remoteurl, opt)
它工作正常并且仅同步员工文档。
如果我在如下所述的沙发床中更改过滤器文档(设计文档)
{
"_id": "_design/live_filter",
"_rev": "6-d02296cc19f98676cb674339e8563d69",
"language": "javascript",
"filters": {
"live_filter": "function(doc) { if (doc._id === '_design/live_filter') { return true; } else if (doc.data) { if (doc['data'].type === 'employee' || doc['data'].type === 'department') { return true; } else { return false; } } else { return false; } } "
}
}
在这里,我还添加了部门对象。进行此更改后,员工仅同步,而不同步部门文档。如何获得部门文件?如果我在ouchdb中修改部门文档,则它将同步。
答案 0 :(得分:0)
复制过程按更改发生的顺序处理文档。
因此,如果您处于序列1001并更新了过滤器复制,则序列1001之后的更改将使用更新的过滤器功能进行处理。
如果要从第一个序列开始复制,则需要取消复制并使用更新的过滤器功能重新开始。
注意:从目标数据库中筛选出已从中复制的文档。他们已经通过了一次过滤器!
如果您希望复制的输出完全反映您的过滤器功能,则需要复制到新数据库。