2016-12-02 15 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

関連する問題