2016-12-02 3 views
1

Ich habe couchdb auf der Serverseite und pouchdb für meine mobile Anwendung. Ich möchte, dass jeder Benutzer seine eigenen Daten erhält, basierend auf der Referenznummer (ref_no). Ich habe bereits versucht, es zu filtern, aber es gibt keine Datensynchronisation mit couchdb. Ich folge dem Schritt von Pouchdb/Couchdb Dokumentation. Aber ich weiß nicht, ob der Schritt, dem ich folge, richtig ist oder nicht. Bitte führe mich, wenn ich einen Fehler mache. Unten ist mein Code auf der Client-Seite.So filtern Sie die Replikation zwischen pouchdb und 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) 
    }); 
} 

Und das ist Filter in Serverseite.

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

Antwort

1

Der Filter, den Sie in Ihrer PouchDB-Replikationskonfiguration angegeben haben, entspricht nicht dem in Ihrem Entwurfsdokument.

Sie versuchen zu filtern mit: filter:'task/byRef_no'.

Eigentlich ist Ihr Filtername myfilter.

Sie sollten etwas suchen, wie diese:

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

ich bereits den Namen des Filters ändern, aber das gleiche Ergebnis. Ich kann die Daten immer noch nicht mit Filtern synchronisieren. Wenn ich den Filter entferne, funktioniert alles gut. – Akmal

+0

Und Ihre Filterfunktion ist eine Zeichenfolge richtig? –

+0

Es tut mir leid. Ich habe es schon mit ein paar Änderungen und mit Ihrer Hilfe getan. Vielen Dank – Akmal

Verwandte Themen