首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当我更改filter函数时,Pouchdb从couchdb过滤复制,而不是过滤

当我更改filter函数时,Pouchdb从couchdb过滤复制,而不是过滤
EN

Stack Overflow用户
提问于 2018-11-30 12:42:30
回答 1查看 352关注 0票数 0

我有带有pouchdb和couchdb的离子型应用程序。我在couchdb中为pouchdb中的同步文档编写了过滤器文档。它会完美地运作。如果我在couchdb中更改了过滤器函数,那么过滤器就不能正常工作。

我的couchdb有以下文件

雇员

代码语言:javascript
运行
复制
{
  "_id": "employee_2_073489FC-786E-4843-BD3F-B7E191BB532D",
  "_rev": "1-f9f43e1416744675ac14c9f3f7323598",
  "data": {
    "name": "prabu1",
    "empid": "2",
    "type": "employee"
  }
}

部门

代码语言:javascript
运行
复制
{
  "_id": "department_2_DD6D808A-57A8-22A4-A5FF-A610F50AC678",
  "_rev": "2-99fde11786d64ef9928ddca590998588",
  "data": {
    "name": "ios",
    "deptid": "1",
    "type": "department"
  }
}

这是我的过滤器文档在沙发(设计文档)

代码语言:javascript
运行
复制
{
  "_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;  } } "
  }
}

离子应用程序中的同步代码

代码语言:javascript
运行
复制
var opt = {
                live: true,
                retry: true,
                filter: "live_filter",
                include_docs: true
            }
this.db.sync(remoteurl, opt)

它工作正常,只同步员工文档。

如果我在couchdb中更改筛选文档,如下所示(设计文档)

代码语言:javascript
运行
复制
{
  "_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中的部门文档,那么它将同步。

EN

回答 1

Stack Overflow用户

发布于 2018-12-03 15:22:09

复制处理按发生更改的顺序处理文档。

复制是如何工作的?

因此,如果您位于序列1001,并且更新了筛选器复制,则序列1001之后的更改将使用更新的筛选器函数处理。

一开始就复制

如果要从第一个序列进行复制,则需要取消复制并重新使用更新的筛选器函数。

备注:已经从目标数据库中复制的文档。他们已经通过一次过滤器了!

新鲜复制

如果希望复制的输出完整地反映筛选器功能,则需要复制到新数据库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53557825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档