2016-11-16 3 views
0

Ich benutze pouchdb und couchDb als db für meine offline erste mobile App mit reagieren.Sync Pouchdb mit gefilterter Replikation

https://pouchdb.com/2015/04/05/filtered-replication.html

auf der obigen basiert, wie i pouchdb und synchron mit couchdb.I konfigurierten Benutzerbasierte Filterung tue. Wenn sich der Benutzer abmeldet und erneut anmeldet, sind die DB-Werte verfügbar. Was ist der beste Designansatz dafür?

Gibt es ein Beispiel, auf das ich verweisen kann?

configurePouchdb(user) { 
var db = new PouchDB('dbname', {adapter: 'websql'}); 

var serverSideFilter = { 
     _id: "_design/app", 
     filters: { 
      "by_user": function (doc, req) { 
       return doc._id === '_design/app' || (doc.userId != undefined && doc.userId === req.query.userId); 
      }.toString() 
     } 
    }; 
    db.put(serverSideFilter).then(function (doc) { 
     // design doc created! 
    }).catch(function (err) { 
     // if err.name === 'conflict', then 
     // design doc already exists 
    }); 
    db.sync('http://127.0.0.1:5984/dbname', { 
     live: true, 
     retry: true, 
     filter: 'app/by_user', 
     query_params: {"userId": user} 
    }); 
    return db; 
} 

Antwort

4

Soweit ich weiß, Ansichten entweder in CouchDB oder PouchDB haben keinen erf Argument, da Ansichten nur einen Index generieren, die nicht unter den Nutzern variieren.

Wie in https://pouchdb.com/2015/04/05/filtered-replication.html erwähnt, wird nicht empfohlen, gefilterte Replikationen anstelle von ordnungsgemäßer Authentifizierung zu verwenden. Es gibt ein gutes Rezept von einem des Haupt-Committer von PouchDB in https://github.com/nolanlawson/pouchdb-authentication#couchdb-authentication-recipe ist

In jedem Fall ist es eine sehr gute Anleitung, um gefilterte Replikation in der PouchDB API-Dokumentation: https://pouchdb.com/api.html#filtered-replication.