Couchdb / Pouchdb 多个用户和多个文档之间的关系

Couchdb / Pouchdb Relation between multiple users and multiple documents

我这里有一个问题: 我正在使用 ionic frmaework 构建一个需要能够离线工作的移动应用程序。

我想采用 CouchDB / PouchDB 方案。但要做到这一点,我需要知道如何将我的数据放入 noSQl 数据库(MySQL 用户之前......)。所以,nosql 对我来说是新手,但它似乎很有趣。

所以我的应用程序有一个连接部分,所以有一个用户数据库。每个用户都有附在他身上的文件。但是很多用户可以拥有很多文档(共享文档)。我想复制一个用户的数据(所以他的信息+他在移动应用程序上的文档)。

我以为是这样的:

每个数据库一个。所有文档的一个数据库,服务器过滤只发送属于用户的文档。

在客户端,我只需要调用:

var localDB = new PouchDB("myuser");
var remoteDB = new PouchDB("http://128.199.48.178:5984/myuser");
  localDB.sync(remoteDB, {
    live: true
  });

就像在客户端那样,我会有类似的东西:

{
    username: "myuser",
    birthday : "Date",
    documents : [{
        "_id": "2",
        "szObject": "My Document",
    },
    {
        "_id": "85",
        "szObject": "My Document",
    }]
}

您认为使用 Couchdb 和 pouchdb 可以实现类似的功能吗?如果可以,我的思考方式是否正确? 我读到每个文档有一个数据库不是问题,但我不知道复制是否会像我想象的那样工作

Plain CouchDB 没有任何 per-document 访问选项,但这些可能是您的解决方案:

一个。创建视图,然后将 Pouch-To-Couch 与过滤器同步。但是,虽然这只会同步用户应该看到的文档,但任何有足够知识的人都可以更改代码并查看其他人的文档,或者实际上对数据库做任何事情(可能不是你想要的)。

乙。创建一个包含所有文档的主数据库,然后为每个用户创建一个数据库,以及主数据库和 per-user-dbs 之间的过滤复制。可能是处理此问题的最简单和最正确的方法。

C。不幸的是没有 validate_doc_read(因为有 validate_doc_update)但也许你可以做一个简单的 HTTP 代理,它会解析传入的 JSON,检查特定用户是否可以查看如果没有,则抛出 403 Forbidden。好吧,您还必须捕获使用 include_docs=true.

查询的任何视图

(迟到的回复,我希望它仍然有用 - 或者如果没有,您找到了解决问题的好方法)