在联系人管理应用程序中,每个用户将拥有自己的数据库。当用户希望与他人共享某些类别的联系人时,后端将启动复制。每个联系人都是自己的文档,但也有各种子文档,例如便笺和约会。
这是一个例子...
接触:
{
"_id": 123,
"type": "contact",
"owner": "jimmy",
"category": "customer",
"name": "Bob Jones",
"email": "[email protected]"
}
笔记:
{
"_id": 456,
"type": "note",
"owner": "jimmy",
"contact_id": 123,
"timestamp": 1383919278,
"content": "This is a note about Bob Jones"
}
假设吉米只想与销售经理凯文(Kevin)共享他的客户,而他的私人联系人则保持私密。当注释通过复制过滤器时,是否可以访问链接的联系人的类别字段?
还是我必须在联系人的每个孩子中重复类别字段?我希望不必这样做,因为每个联系人可能有很多孩子,每当类别更改时,我都必须手动对其进行更新。
这是过滤器功能的一些伪代码:
function(doc, req)
{
if(doc.type == “contact”) {
if(doc.category == req.query.category) {
return true;
}
}
else if(doc.contact_id) {
if(doc.contact.category == req.query.category) {
return true;
}
}
return false;
}
如果可能的话,请描述如何做。谢谢!
不,这是不可能的。每个文档必须一致,因此与其他文档没有任何明确的关系。有contact_id
参考价值只是从你身边的协议- CouchDB的是没有意识到这一点。
您实际上需要将类别文档嵌套在联系人中才能做到这一点,例如,使单个文档由过滤器功能处理。从某个角度来说,这是一个很好的解决方案,当您需要保持联系文档的状态一致时。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句