2016-12-02 61 views
1

我在服務器端有couchdb,我的移動應用程序有pouchdb。我希望每個用戶根據參考號碼(ref_no)獲取他們自己的數據。我已經嘗試過濾它,但沒有數據同步到couchdb。我遵循pouchdb/couchdb文檔中的步驟。但我不知道我所遵循的步驟是否正確。如果我犯了一個錯誤,請指導我。以下是我在客戶端的代碼。如何篩選pouchdb和couchdb之間的複製

constructor(public http: Http, public settingProvider:SettingProvider) { 

    this.db = new PouchDB('task'); 

} 


initializeRemote(url,ref_no){ 

    this.remote = url + '/task'; 

    let options = { 
    live: true, 
    retry: true, 
    filter:'task/byRef_no', 
    query_params: {'ref_no':ref_no} 
    }; 

    this.db.sync(this.remote, options) 
    .on('change', function(change){ 
     console.log('InspectionTask provider change!', change); 
    }) 
    .on('paused', function(info){ 
     console.log('InspectionTask provider paused!', info); 
    }) 
    .on('active', function(info){ 
     console.log('InspectionTask provider active!', info); 
    }) 
    .on('error', function(err){ 
     console.log('InspectionTask provider error!', err) 
    }); 
} 

而這是服務器端的過濾器。

{ 
    _id: '_design/task', 
    filters: { 
    myfilter: function (doc, req) { 
     return doc.ref_no === req.query.ref_no; 
    } 
    } 
} 

回答

1

您在PouchDB複製配置中指定的過濾器不是您的設計文檔中的過濾器。

您正在嘗試篩選:filter:'task/byRef_no'

其實,您的過濾器名稱是myfilter

你應該有一些看起來像這樣:

let options = { 
    live: true, 
    retry: true, 
    filter:'task/myfilter', 
    query_params: {'ref_no':ref_no} 
    }; 
+0

我已經改變了過濾器的名稱,但相同的結果。我仍然不能與過濾器同步數據。如果我刪除過濾器,一切正常。 – Akmal

+0

你的過濾器函數是一個字符串嗎? –

+0

很抱歉。我已經做了一些改變,並在你的幫助下完成。謝謝 – Akmal