2017-10-11 9 views
0

J'essaie de synchroniser une instance PouchDB locale à un CouchDB distant. Les choses fonctionnent bien, mais je ne suis pas sûr de savoir comment gérer la situation suivante:PouchDB détecter les documents qui ne sont pas synchronisés

J'ai ajouté une règle de validation dans CouchDB pour empêcher la mise à jour (toutes les mises à jour seront refusées). Lorsque j'exécute la fonction de synchronisation sur mon instance PouchDB locale après avoir modifié un document, l'événement «refusé» se déclenche comme je l'attendrais. Cependant, si j'exécute la synchronisation une seconde fois, l'événement "denied" ne se déclenche plus, même si le document local diffère de la version de CouchDB.

Comment puis-je vérifier si la base de données locale correspond à la base de données distante? Si l'événement "denied" me manque la première fois (disons que l'utilisateur ferme le navigateur), comment puis-je détecter lors de la prochaine exécution que les bases de données ne sont pas synchronisées? Comment puis-je forcer PouchDB à essayer de synchroniser à nouveau le document modifié afin que je puisse voir l'événement refusé?

Merci!

syncPouch: function(){ 
    var opts = {}; 
    var sync = PouchDB.sync('orders', db.remoteDB, opts); 
    sync.on('change', function (info) {}); 
    sync.on('paused', function(){ 
    }); 
    sync.on('active', function() {}); 
    sync.on('denied', function(err){ 
    //This only fire once no matter how many times I call syncPouch 
    console.log("Denied!!!!!!!!!!!!"); 
    debugger; 
    }); 
    sync.on('complete', function (info) { 
    //This fires every time 
    console.log("complete");console.log(info); 
    }); 
    sync.on('error', function(err){ 
    debugger; 
    }); 
    return sync; 
}, 

Répondre

0

Ce que je constate avec les fonctions de validate_doc_update est que PouchDb semble traiter un « refusé » document synchronisation ed. Par conséquent, même si vous supprimez la fonction validate_doc_update, le document ne se synchronisera pas dans la base de données distante lors des tentatives suivantes même si ce n'est pas la même.

Vous pouvez donc vous retrouver avec une situation de "désynchronisation" qui ne peut être résolue qu'en modifiant à nouveau l'un des documents.

Peut-être que vous voyez la même chose? Peut-être que l'événement "refusé" ne se déclenche pas parce que PouchDb n'a pas tenté de synchroniser le document (puisqu'il a déjà essayé de le synchroniser précédemment)?