有没有办法在两个数据库之间同步couchdb中的单个文档?

有没有办法在两个数据库之间同步couchdb中的单个文档?,couchdb,replication,sync,Couchdb,Replication,Sync,我需要在数据库之间同步单个文档,以便在更新一个文档时,另一个文档位于同一服务器上。其动机是为了协作目的而尝试在数据库之间共享单个文档,因为没有文档级权限。这意味着如果databaseA和userA有一个userA想要与“拥有”databaseB的userB共享的文档。据我所知,在userA的数据库中没有很好的方法来共享文档,因为userB不是databseA上的阅读器 现在,我的解决方案是允许在数据库之间链接单个文档(应所有者的请求并接受目标数据库),然后使它们始终保持最新。有什么想法可以实现吗

我需要在数据库之间同步单个文档,以便在更新一个文档时,另一个文档位于同一服务器上。其动机是为了协作目的而尝试在数据库之间共享单个文档,因为没有文档级权限。这意味着如果databaseA和userA有一个userA想要与“拥有”databaseB的userB共享的文档。据我所知,在userA的数据库中没有很好的方法来共享文档,因为userB不是databseA上的阅读器


现在,我的解决方案是允许在数据库之间链接单个文档(应所有者的请求并接受目标数据库),然后使它们始终保持最新。有什么想法可以实现吗?

您可以使用一种称为过滤复制的功能。在普通复制使整个数据库保持同步的情况下,您可以提供一个过滤器函数,该函数为任何应该复制的文档返回true,否则返回false。结合连续复制任务,您可以使用此功能以近乎实时的方式保持单个文档的同步

实际上,您必须决定如何设置复制任务。假设应用程序中有许多用户可以共享任意数量的文档,可以使用以下方法:每个用户1个数据库+1个包含所有文档的主数据库。也就是说,您可以设置从任何用户的数据库到主数据库的连续复制(这对您的任何用户都不可读,只有管理员可读)。在您存储的每个文档中,都有一个字段,例如“所有者”,其中包含一组用户,这些用户可以访问该文档(用户可以编辑该文档)。然后设置从主数据库到每个用户数据库的过滤复制,过滤功能根据字段“所有者”决定是否复制文档。这种方法需要每个用户执行两个复制任务


有关筛选复制的更多信息,请参阅;有关复制的一般信息,请参阅。请注意,CouchDB 1.1中用于复制的API稍有更改,基本上是用_replicator替换_replicate。

虽然这种方法有效,但如果要复制单个文档,则更简单的方法是命名为文档复制: