Репликация PouchDB вызывает ошибку при репликации

7

Когда я пытаюсь реплицировать удаленный couchdb (на ubuntu 14.04- 64 bit ) с моим местным pouchdb , я воспользуюсь этой странной ошибкой. Мой couchdb проксируется через nginx и работает на https . Трафик от клиента до nginx - это ssl, а nginx to couchdb - простой http. Запросы Cors разрешены в couchdb. Конфигурация Nginx наиболее похожа на рекомендуемый couchdb . Синхронизация из базы данных работает нормально, но становится ниже ошибок при отладке через chrome Version 54.0.2840.100 (64-разрядная версия).

Ниже приведена полная ошибка стека ошибки.

raven.min.js:2 Error: There was a problem getting docs. at finishBatch (http://localhost:8100/lib/pouchdb/dist/pouchdb.js:6410:13) at processQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:27879:28) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:27895:27 at Scope.$eval (http://localhost:8100/lib/ionic/js/ionic.bundle.js:29158:28) at Scope.$digest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:28969:31) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:29197:26 at completeOutstandingRequest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:18706:10) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:18978:7 at d (http://localhost:8100/lib/raven-js/dist/raven.min.js:2:4308) undefineda.(anonymous function) @ raven.min.js:2(anonymous function) @ ionic.bundle.js:25642(anonymous function) @ ionic.bundle.js:22421(anonymous function) @ angular.min.js:2processQueue @ ionic.bundle.js:27887(anonymous function) @ ionic.bundle.js:27895$eval @ ionic.bundle.js:29158$digest @ ionic.bundle.js:28969(anonymous function) @ ionic.bundle.js:29197completeOutstandingRequest @ ionic.bundle.js:18706(anonymous function) @ ionic.bundle.js:18978d @ raven.min.js:2 raven.min.js:2 Paused in lessondb replicate Error: There was a problem getting docs. at finishBatch (http://localhost:8100/lib/pouchdb/dist/pouchdb.js:6410:13) at processQueue (http://localhost:8100/lib/ionic/js/ionic.bundle.js:27879:28) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:27895:27 at Scope.$eval (http://localhost:8100/lib/ionic/js/ionic.bundle.js:29158:28) at Scope.$digest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:28969:31) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:29197:26 at completeOutstandingRequest (http://localhost:8100/lib/ionic/js/ionic.bundle.js:18706:10) at http://localhost:8100/lib/ionic/js/ionic.bundle.js:18978:7 at d (http://localhost:8100/lib/raven-js/dist/raven.min.js:2:4308)

Сетевые журналы в хроме показывают, что некоторые запросы отменены

Я использую версию couchdb - 1.6.1 и версию pouchdb - 5.3.2. Я использую следующую команду для репликации dbs:

myDB.replicate.from(remote_db_url,{ live: true, retry: true, heartbeat: false }) Также было бы здорово, если бы кто-то мог пролить свет на параметр сердечного ритма.     

задан kartik 29.11.2016 в 13:36
источник

1 ответ

0

Примечание. Я не могу решить описанную вами ошибку. Может быть, полная трассировка стека, а не скриншот может помочь ...

Но я попытаюсь пролить свет на параметр heartbeat: чтение документов уже немного помогает. Дополнительные возможности метода replicate см. В дополнительных параметрах:

  

options.heartbeat: Настройте биение, поддерживаемое CouchDB, которое поддерживает изменение соединения.

Итак, давайте рассмотрим Документы CouchDB , чтобы узнать, что делает этот параметр:

  

Сети - хитрый зверь, и иногда вы не знаете, не произойдет никаких изменений или ваше сетевое соединение устарело. Если вы добавите еще один параметр запроса, heartbeat = N, где N - число, CouchDB отправит вам символ новой строки каждые N миллисекунд. Пока вы получаете символы новой строки, вы знаете, что новых уведомлений об изменениях нет, но CouchDB все еще готов отправить вам следующий, когда это произойдет.

Таким образом, в основном это механизм опроса, который отправляет сообщение (например, новую строку) каждые n миллисекунд (где n - указанное вами значение heartbeat ), чтобы убедиться, что соединение между двумя базами данных все еще работает.

Установка значения в false отключит этот механизм.

Относительно того, какое значение может быть использовано для этого параметра: Документы PouchDB сообщают далее, что метод changes имеет аналогичный параметр, описанный следующим образом:

  

options.heartbeat: только для HTTP-адаптера, время в миллисекундах для сервера, чтобы дать пульс, чтобы длинные подключения открывались. По умолчанию для 10000 (10 секунд) используйте false, чтобы отключить значение по умолчанию.

    
ответ дан Phonolog 29.11.2016 в 16:29