2012-03-30 39 views
0

为了过滤来自其他用户的自己的文档,我返回文件为重点,或键的一部分的创造者:如何在CouchDB中仅显示用户自己的文档?

org.couchdb.user:user1 

[org.couchdb.user:user1, otherkey] 

是这个创建“我的文档”页面的最佳方法是什么?或者,我可以简单地返回另一个关键

otherkey 

,并使用userCtx稍后筛选呢?

+0

您是否需要禁止访问非拥有的文档? – 2012-03-31 06:53:16

+0

是的。最终,我想让他们有权允许其他用户查看或编辑它们。 – 2012-03-31 13:32:16

回答

0

答案取决于你的架构。

如果你有某种客户端和数据库之间的“中间件”的,可以限制通过查询?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",{}]你的数据从你描述的第二视图模式([org.couchdb.user:user1, otherkey])获取。这将结果限制为第一个可能的发射键和最后一个键之间的结果,因为较短的数组排序时间较长,而对象按其他值类型排序。

如果您尝试尽可能多地在CouchDB中执行验证和数据显示(例如,您正在编写“CouchApp”),那么您应该考虑使用filtered replication。这可以用来为每个用户提供他们自己的个人数据库,例如只包含他们应该看到的文档的非公共主数据库的子集。然后,您可以发出纯文档密钥,并假定您的结果只包含相关文档。

关于过滤复制在本博客文章中的使用过程,有更多的背景资料,您可以在这里找到关于特定问题的更多讨论。

相关问题