PouchDB复制在复制时抛出错误

时间:2016-11-29 12:36:38

标签: google-chrome nginx couchdb ubuntu-14.04 pouchdb

当我尝试使用我的本地couchdb复制远程ubuntu 14.04- 64 bit(在pouchdb上)时,我遇到了这个奇怪的错误。 我的couchdb通过nginx代理并在https上运行。从客户端到nginx的流量是ssl,而nginx到couchdb是简单的http。在couchdb中启用了Cors请求。 Nginx配置与 couchdb recommended最相似。从数据库同步工作正常,但在通过Chrome版本54.0.2840.100(64位)进行调试时遇到错误。

enter image description here

以下是错误的完整堆栈跟踪。

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)

网络登录chrome显示某些请求已取消

enter image description here

我正在使用couchdb版本 - 1.6.1和pouchdb版本 - 5.3.2。 我使用以下命令来复制dbs:

myDB.replicate.from(remote_db_url,{ live: true, retry: true, heartbeat: false }) 如果有人可以对心跳参数有所了解,也会很棒。

1 个答案:

答案 0 :(得分:0)

注意:我无法解决您描述的错误。也许完整的堆栈跟踪而不是截图可能有帮助...

但我会尝试对heartbeat参数有所了解:阅读docs已经有所帮助了。请参阅replicate方法的高级选项:

  

options.heartbeat:配置CouchDB支持的心跳,使更改连接保持活动状态。

因此,让我们查看CouchDB's docs以查看此参数的作用:

  

网络是一个棘手的野兽,有时您不知道是否没有变化或您的网络连接失效。如果添加另一个查询参数heartbeat = N,其中N是数字,CouchDB将每N毫秒发送一个换行符。只要您收到换行符,就知道没有新的更改通知,但CouchDB仍然准备好在发生下一个时发送给您。

所以基本上它似乎是一个轮询机制,每隔n毫秒(其中n是你指定的heartbeat值)发送一条消息(例如换行符),以确保两个数据库之间的连接仍然有效。

将值设置为false将禁用此机制。

关于哪个值可用于此参数: changes进一步说明{{1}}方法具有类似的参数:

  

options.heartbeat:仅适用于http适配器,服务器提供心跳以保持长连接打开的时间(以毫秒为单位)。默认为10000(10秒),使用false禁用默认值。