2

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

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

我明白这意味着什么,但它是如何工作的?我查看了代码,但很难理解“订阅”是如何完成的。

4

2 回答 2

6

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

如果它是一个远程 CouchDB,pouch 会向该 couchdb ( http://wiki.apache.org/couchdb/HTTP_database_API#Changes )的资源发出xhr请求。正如 Kim 所说,它确实设置了 feed=longpoll 。该选项让 couch 等到有变化才发送任何东西——这样你就不会轮询一遍,只是发现没有变化。db/_changeslongpoll

如果第一个数据库是本地 PouchDB,它会侦听“更改”事件,这些事件会在数据库发生更改时触发。

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

于 2013-06-14T15:06:05.280 回答
1

我还没有阅读 PouchDB 代码,但这样做的唯一方法是收听_changesfeed,可能feed设置为long-pollingor continuous

于 2013-06-14T08:36:39.170 回答