2015-06-30 4 views
0

Я хотел бы сделать индикатор выполнения на время синхронизации базы данных. Запрос, который подсчитывает количество синхронизируемых документов, слишком длинный. Я попытался с запросом GET _active_tasks в базе данных couchdb, но он возвращает пустой json. Я попытался с событием изменения функции репликации Pouchdb, но информационная переменная не отображается. У вас есть другая техника для индикатора прогресса или вы знаете, как использовалась техника, которую я когда-либо пробовал?синхронизация с pouchdb и couchdb

ответ

1

я не нашел идеальное решение, но тот, который, казалось, «достаточно хорошо» для нас было

  1. получить информацию об источнике дб, чтобы знать, что «конечная цель» есть.

  2. Добавить обратный вызов изменений (как вы упомянули в своем ответе), где вы получаете информационный объект с реплицированным last_seq. Разделите это с помощью update_seq, полученным от источника, и обновите индикатор выполнения.

~

Q.all(source.info()) 
    .then(function(sourceInfo) { 
     var replication = source.replicate.to(target); 
     var startingpoint; 
     replication.on('change', function(info) { 
     // the first time we get a replication change, 
     // take the last_seq as starting point for the replication 
     // and calc fractions based on that 
     var fraction = 0; 
     if(typeof startingpoint === "undefined") { 
      startingpoint = info.last_seq; 
     } else { 
      fraction = (info.last_seq - startingpoint)/(sourceInfo.update_seq - startingpoint); 
     } 
     // Whatever you need to do to update ui here 
     updateUi(fraction); 
     }); 
    }) 
Смежные вопросы