在PouchDB Documentation中,我发现同步是在本地数据库和远程CouchDB数据库之间。我正在尝试为每个用户(许多数据库)构建一个本地数据库并同步到一个远程数据库:
假设用户01同步到远程数据库,然后用户02也同步到它。我认为它会覆盖第一个用户的数据。这就是我想要的:
// Default
user1 = ['data']
user2 = ['data']
remote = [user1 or user2]
// what i want
user1 = ['data']
user2 = ['data']
remote = [user1, user2, ....etc]
答案 0 :(得分:2)
复制依赖于正在同步的数据库的序列。因此,当他们的_id
值相互冲突时,您只会“覆盖”数据。但是,我怀疑您需要应对的下一个问题是将用户数据分开。
如果您将所有用户复制到一个数据库中,那么当他们从该单个数据库中复制回来时,所有用户也将收到所有其他用户的数据。我不确定你的用例是什么,但通常不是应用程序的结构。如果您想使用这样的单个数据库,则需要在文档中包含某种标记并使用Filtered Replication。
为了让您的数据按用户分段,您需要在每次同步时都努力使用此参数。但是,如果您正在同步它们,您的数据库可能会暴露给公共互联网,而且缺乏文档级控制意味着您的精明用户无论如何都能够看到其他人的数据。
我的建议是为每个用户提供他们自己的数据库,而不是将所有内容复制到一个中心数据库中。使用CouchDB 2.x,您可以访问couch_peruser,它会自动为每个注册用户提供自己的数据库。 (这也需要向CouchDB注册您的用户,但老实说,无论如何,这对于公开的服务器来说是最好的安全性)