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

Couchdb / Pouchdb Relation between multiple users and multiple documents

本文关键字:之间 关系 文档 用户 Pouchdb Couchdb      更新时间:2023-09-26

我有一个问题:我正在用离子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没有任何按文档访问的选项,但这些可能是您的解决方案:

A。创建一个视图,然后使用过滤器同步"包到沙发"。但是,尽管这只会同步用户应该看到的文档,但任何有足够知识的人都可以修改代码并查看其他人的文档,或者只是对数据库做任何事情(可能不是你想要的)。

B。创建一个包含所有文档的master DB,然后为每个用户创建一个数据库,并在master和amp;每个用户的dbs。这可能是最简单、最恰当的处理方式。

C。不幸的是,没有validate.doc_read(因为有validate.doc_update),但也许你可以制作一个简单的HTTP代理,它可以解析传入的JSON,检查特定用户是否可以查看它,如果不能,则抛出403 Forbidden。您还必须捕获任何查询include_docs=true的视图。

(回复晚了,我希望它仍然有用-如果没有,那就是你找到了一个很好的问题解决方案)