簡體   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