Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework Ionic 2 couchDB数据库同步问题_Ionic Framework_Ionic2_Couchdb_Pouchdb_Nosql - Fatal编程技术网

Ionic framework Ionic 2 couchDB数据库同步问题

Ionic framework Ionic 2 couchDB数据库同步问题,ionic-framework,ionic2,couchdb,pouchdb,nosql,Ionic Framework,Ionic2,Couchdb,Pouchdb,Nosql,我正在用couchdb和PockDB构建一个ionic 2测验应用程序,但面临同步问题 我的couchdb服务器有超过20k个文件,并且将继续增加。 文件被标记为主题文档和测验文档。基本上,主题文档具有测验文档列表 我有大约200个主题文档,其余的是测验文档 现在,如果我使用双向同步与下面的代码 this.db = new PouchDB('mydb'); this.remote ='http://server_ip:5984/mydb'; this.db.sync(this.remote,

我正在用couchdb和PockDB构建一个ionic 2测验应用程序,但面临同步问题

我的couchdb服务器有超过20k个文件,并且将继续增加。 文件被标记为主题文档和测验文档。基本上,主题文档具有测验文档列表

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

现在,如果我使用双向同步与下面的代码

this.db = new PouchDB('mydb'); 
this.remote ='http://server_ip:5984/mydb';
this.db.sync(this.remote, options);
一旦应用程序启动,它就开始从couchdb服务器下载所有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”,我只能同步与某个页面关联的数据

有关PockDB和CouchDB筛选复制的更多信息,请参阅

有关CouchDB过滤器功能的完整文档,请参阅