로딩 화면을 만들기 위해 pouchdb가 복제 할 때 변경 사항을 추적하려고합니다.pouchdb에서 복제/변경 추적
저는 각각 2000 개 정도의 문서가있는 여러 데이터베이스를 가지고 있습니다. 초기로드는 꽤 오래 걸리므로 앱이 백그라운드에서 무슨 일이 일어나고 있는지 사용자에게 알려주 길 바랍니다.
//define vars
var nameDB = "location";
var remoteDB = new PouchDB("http://localhost:5984/" + nameDB);
var localDB = new PouchDB(nameDB);
var localdocCount;
var localdocCounter = 0;
var remotedocCount;
//wrap replication in reusable function
function replicate(){
//replicate TO the server
PouchDB.replicate(localDB,remoteDB, {
continuous: false,
attachments: true
},
function(){
//on callback replicate FROM server
PouchDB.replicate(remoteDB,localDB, {
continuous: false,
attachments: true
},
function(){
//replicate FROM complete
);
});
//compact local database to keep size down
//all revisions are replicated to the server
//no need to keep them locally
localDB.compact();
}
//get the remote db info first and see how many documents it has
//remote update_seq how does it match up to localdb update_seq?
remoteDB.info(function(err, info) {
remotedocCount = info.doc_count;
console.log(info);
});
//get info for local db for comparison with remote
localDB.info(function(err, info) {
localdocCount = info.doc_count;
//Actually run the replication now that we have the
//remote and local db info
replicate();
//track any changes to the localdb
localDB.changes({
continuous: true,
onChange: function(){
//change detected increment counter
localdocCounter++;
console.log("Downloaded "
+ (localdocCount + localdocCounter)
+ " of " + remotedocCount + " to " + nameDB);
//localdocCount === The total Documents in the local database
//localdocCounter === The changes that have been made since
//remotedocCount === The amount of documents we need
}
});
});
위의 코드는 서버에서 클라이언트로 다운로드되는 문서의 양을 추적하는 나의 시도입니다.
위의 코드가 작동합니다. 문서가 다운로드되고있는 것을 볼 수 있습니다.
그러나 이는 사용자가 문서를 업데이트 할 때 첫 번째로드 시나리오 만 처리합니다.
여기는 내가 update_seq를 사용한다고 생각합니다.
그러나 update_seq를 사용하여 수행해야하는 변경 사항을 정확하게 파악하는 방법을 알아낼 수 없습니다.
요약하면 변경 사항이 발생하는지 확인할 수는 있지만 응용 프로그램이 최신 상태로 유지되는 데 필요한 총 변경 내용을 얻는 방법을 알 수 없습니다.
어쩌면이 접근법은 완전히 해제 되었습니까?
현재 이것은 초기 동기화에서만 작동하며 문서의 첫 번째로드를 정확하게 추적 할 수 있습니다. 제안에 따라 코드를 업데이트했습니다. 감사합니다. 그러나 새 개정판이있는 문서의 복제를 시도하고 추적하기 위해이 단계를 더 진행하고 싶다면 API에서 이와 같은 내용을 노출합니까? 이와 같은 것을 시도하고 구현하는 좋은 방법은 무엇입니까? –
pouchdb 복제가 서버에서 업데이트 된 버전을 확인한 다음 변경 사항을 처리하고 처리 된 문서 수를 docs_written에 추가하는 것으로 알고 있습니다. 그런 이유로 checkServerDifference() === totalLocalDocumentsToUpdateCount가 없습니까? –