我这里有问题: 我正在建立一个移动应用程序,需要能够脱机工作的离子frmaework。
我想采用CouchDB / PouchDB解决方案。但要做到这一点,我需要知道如何将我的数据放入noSQl数据库(之前的MySQL用户......)。所以,nosql对我来说是新的,但它似乎很有趣。
所以我的应用程序有一个连接部分,所以用户数据库。每个用户都有附在他身上的文件。但是许多用户可以拥有许多文档(共享文档)。我想复制一个用户的数据(所以他的信息+他的文件在移动应用程序上)。
我的想法是这样的:
每个数据库一个。所有Document的一个数据库,其中服务器过滤仅发送属于该用户的文档。
在客户端,我必须致电:
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可以做到这样吗?如果是的话,我是否正确地思考它? 我读到每个文档有一个数据库不是问题,但我不知道复制是否会像我想象的那样工作
答案 0 :(得分:2)
普通CouchDB没有任何每个文档访问选项,但这些可能是您的解决方案:
一个。创建一个视图,然后使用过滤器同步Pouch-To-Couch。但是,虽然这只会同步用户应该看到的文档,但是任何有足够知识的人都可以更改代码并查看其他人的文档,或者只是对数据库执行任何操作(可能不是您要查找的内容)。
B中。创建包含所有文档的主数据库,然后创建每个用户的数据库,以及主数据库和主数据库之间的过滤复制。每用户-DBS。可能是处理这个问题的最简单,最合适的方法。
℃。不幸的是,没有validate_doc_read(因为有一个validate_doc_update),但也许您可以创建一个简单的HTTP代理,它将解析传入的JSON,检查特定用户是否可以查看它,如果没有,则抛出403 Forbidden。那么你还必须捕获任何使用include_docs = true进行查询的视图。
(迟到的回复,我希望它仍然有用 - 或者如果没有,你找到了解决问题的好方法)