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

标签 javascript database database-design couchdb pouchdb

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

A.创建一个 View ,然后将 Pouch-To-Couch 与过滤器同步。但是,尽管这只会同步用户应该看到的文档,但任何有足够知识的人都可以更改代码并查看其他人的文档,或者实际上对数据库执行任何操作(可能不是您想要的)。

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

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

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

关于javascript - Couchdb/Pouchdb 多个用户和多个文档之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34509378/

相关文章:

oop - DAO 和业务逻辑

javascript - 从另一个 jsx 文件导入所有函数和常量

为具有多项数据的用户设计Mysql

database-design - ER(实体关系)图的答案评估

mysql - 许多 MySQL 数据库 - 问题?

mysql - 获取一个整数并将其转换为日期 - mysql

sql-server - Oracle 数据库表到 SQL Server 数据库表

javascript - Interactjs 旋转改变位置

javascript - Jquery:获取函数的返回值

javascript - 下载文件到某个客户端驱动器路径