'连续'对PouchDB replicate()意味着什么?

Sam*_*ton 2 couchdb pouchdb

根据PouchDB replicate()文档,可以添加一个continuous选项Pouch.replicate():

如果为true,则开始订阅第一个数据库中的更改并将其复制到第二个数据库.

我明白这意味着什么,但它是如何运作的?我看过代码,但很难理解'订阅'是如何完成的.

jch*_*hes 6

这取决于第一个数据库是什么.

如果它是远程CouchDB,则pouch 向该couchdb xhrdb/_changes资源发出请求(http://wiki.apache.org/couchdb/HTTP_database_API#Changes).正如金提到的那样,确实设置了feed = longpoll.该longpoll选项使沙发等待,直到它发送任何内容之前发生变化 - 这样你就不会轮询结束只发现没有变化.

如果第一个数据库是本地PouchDB,它将侦听"更改"事件,只要在数据库中进行更改,就会触发这些事件.

无论哪种方式,当复制器看到更改进入时,它会将其复制到第二个数据库.