将多个 PouchDB 数据库同步到一个 CouchDB 数据库
Sync multiple PouchDB databases to one CouchDB database
在 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]
复制依赖于同步数据库的顺序。因此,当它们的 _id
值相互干扰时,您只能使用 "overwrite" 数据。但是,我怀疑您需要应对的下一个问题是将用户数据分开。
如果您将所有用户复制到一个数据库中,那么当他们从该单个数据库中复制回来时,您的所有用户也将收到所有其他用户的数据。我不确定您的用例是什么,但这通常不是应用程序的结构。如果你想使用这样的单一数据库,你需要在你的文档中加入某种标签并使用 Filtered Replication.
为了让您的数据按用户分段,您需要在每次同步时勤于使用此参数。但是,如果您要同步它们,您的数据库可能会暴露在 public 互联网上,并且缺少文档级控件意味着您的精明用户无论如何都可以看到其他人的数据。
我在这里的建议是为每个用户提供他们自己的数据库,而不是将所有内容复制到一个中心数据库中。使用 CouchDB 2.x,您可以访问 couch_peruser,这会自动为每个注册用户提供他们自己的数据库。 (这也需要在 CouchDB 中注册您的用户,但老实说,无论如何,这对于 public 刚暴露的服务器的安全性是最好的)
在 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]
复制依赖于同步数据库的顺序。因此,当它们的 _id
值相互干扰时,您只能使用 "overwrite" 数据。但是,我怀疑您需要应对的下一个问题是将用户数据分开。
如果您将所有用户复制到一个数据库中,那么当他们从该单个数据库中复制回来时,您的所有用户也将收到所有其他用户的数据。我不确定您的用例是什么,但这通常不是应用程序的结构。如果你想使用这样的单一数据库,你需要在你的文档中加入某种标签并使用 Filtered Replication.
为了让您的数据按用户分段,您需要在每次同步时勤于使用此参数。但是,如果您要同步它们,您的数据库可能会暴露在 public 互联网上,并且缺少文档级控件意味着您的精明用户无论如何都可以看到其他人的数据。
我在这里的建议是为每个用户提供他们自己的数据库,而不是将所有内容复制到一个中心数据库中。使用 CouchDB 2.x,您可以访问 couch_peruser,这会自动为每个注册用户提供他们自己的数据库。 (这也需要在 CouchDB 中注册您的用户,但老实说,无论如何,这对于 public 刚暴露的服务器的安全性是最好的)