我有带有pouchdb和couchdb的离子型应用程序。我在couchdb中为pouchdb中的同步文档编写了过滤器文档。它会完美地运作。如果我在couchdb中更改了过滤器函数,那么过滤器就不能正常工作。
我的couchdb有以下文件
雇员
{
  "_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)它工作正常,只同步员工文档。
如果我在couchdb中更改筛选文档,如下所示(设计文档)
{
  "_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;  } } "
  }
}在这里,我已经添加了部门对象。更改后,员工仅同步,而不是部门文档同步。怎么弄到部门文档?如果我修改couchdb中的部门文档,那么它将同步。
发布于 2018-12-03 15:22:09
复制处理按发生更改的顺序处理文档。
复制是如何工作的?
因此,如果您位于序列1001,并且更新了筛选器复制,则序列1001之后的更改将使用更新的筛选器函数处理。
一开始就复制
如果要从第一个序列进行复制,则需要取消复制并重新使用更新的筛选器函数。
备注:已经从目标数据库中复制的文档。他们已经通过一次过滤器了!
新鲜复制
如果希望复制的输出完整地反映筛选器功能,则需要复制到新数据库。
https://stackoverflow.com/questions/53557825
复制相似问题