繁体   English   中英

Ionic 2 CouchDB PouchDB同步问题

[英]Ionic 2 couchDB pouchDB syning issue

我正在使用CouchDB和PouchDB构建Ionic 2测验应用程序,但面临此同步问题。

我的ouchdb服务器上的文件超过了20k,并且将继续增加。 文件被标记为主题文档和测验文档。 主题文件基本上有测验文件清单。

我大约有200个主题文档,其余的是测验文档。

现在,如果我使用以下代码进行双向同步

this.db = new PouchDB('mydb'); 
this.remote ='http://server_ip:5984/mydb';
this.db.sync(this.remote, options);

该应用程序启动后,它将立即开始从沙发数据库服务器下载所有20k文件,这使该应用程序非常慢。 我想阻止那个。 我只想在需要时才下载文件。

示例:当应用程序加载时,我只希望应用程序从服务器下载一个文档,说“ mainTopic”。此文档包含子主题列表,而这些子主题又包含测验列表。 所以我只想在调用特定主题或测验时才下载文件

this.DataService.getDocument('mainTopic').then((result) => {
this.data = result;
});

//Function in my dataservice
getDocument(id) {      
      if(id==null || id=='')
      {
        id='quiz-578f4b9cb991f';
      }

      console.log('Going to fetch '+id);

      return new Promise(resolve => {

        this.db.get(id).then((result) =>{                    
          this.data=result;          
          resolve(this.data);                 
        }).catch((error) => {   
          console.log(error);   
        }); 

      });
}

我已经阅读了一些有关过滤器的内容,但是我不确定如何使用它们。 请指教

首先,您将需要在CouchDB中构建过滤器。 过滤器如下所示:

{
  "_id": "_design/global",
  "language": "javascript",
  "filters": {
    "byPage": "function(doc, req) { return doc.page == req.query.page }"
  }
}

基本上,过滤器功能接受文档和请求对象。 从请求对象中,可以获取参数。 筛选器非常简单。 如果文档通过过滤器,则需要返回true,否则返回false。

使用示例的过滤器“ byPage”,我可以仅同步与特定页面关联的数据。

有关PouchDB和CouchDB筛选的复制的更多信息,请访问此站点

有关CouchDB过滤器功能的完整文档,请查看此链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM