【问题标题】:Sync multiple PouchDB databases to one CouchDB database将多个 PouchDB 数据库同步到一个 CouchDB 数据库
【发布时间】:2018-06-06 18:28:30
【问题描述】:

在 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]

【问题讨论】:

    标签: javascript node.js nosql couchdb pouchdb


    【解决方案1】:

    复制依赖于正在同步的数据库的顺序。因此,只有当它们的 _id 值会相互破坏时,您才会“覆盖”数据。但是,我怀疑您需要解决的下一个问题是将用户数据分开。

    如果您将所有用户复制到单个数据库中,那么当您的所有用户从该单个数据库中复制回来时,他们也会收到所有其他用户的数据。我不确定您的用例是什么,但这通常不是应用程序的结构。如果您想使用这样的单个数据库,则需要在文档中添加某种标记并使用Filtered Replication

    为了让您的数据按用户分段,您需要在每次同步时认真使用此参数。但是,如果您正在同步它们,您的数据库可能会暴露在公共互联网上,并且缺少文档级控制意味着您的精明用户无论如何都可以看到其他所有人的数据。

    我的建议是为每个用户提供自己的数据库,而不是将所有内容复制到单个中心数据库中。使用 CouchDB 2.x,您可以访问couch_peruser,它会自动为每个注册用户提供自己的数据库。 (这也需要在 CouchDB 中注册您的用户,但老实说,无论如何,这对于公开服务器的安全性来说是最好的)

    【讨论】:

    • @elkebirmed 那么您最终对此有何决定。我也有同样的情况,想放弃这个数据库的想法,转而使用 SQL 风格的数据库。
    猜你喜欢
    • 1970-01-01
    • 2016-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多