我这里有一个问题: 我正在使用 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/