为了过滤来自其他用户的自己的文档,我返回文件为重点,或键的一部分的创造者:如何在CouchDB中仅显示用户自己的文档?
org.couchdb.user:user1
或
[org.couchdb.user:user1, otherkey]
是这个创建“我的文档”页面的最佳方法是什么?或者,我可以简单地返回另一个关键
otherkey
,并使用userCtx
稍后筛选呢?
为了过滤来自其他用户的自己的文档,我返回文件为重点,或键的一部分的创造者:如何在CouchDB中仅显示用户自己的文档?
org.couchdb.user:user1
或
[org.couchdb.user:user1, otherkey]
是这个创建“我的文档”页面的最佳方法是什么?或者,我可以简单地返回另一个关键
otherkey
,并使用userCtx
稍后筛选呢?
答案取决于你的架构。
如果你有某种客户端和数据库之间的“中间件”的,可以限制通过查询?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",{}]
你的数据从你描述的第二视图模式([org.couchdb.user:user1, otherkey]
)获取。这将结果限制为第一个可能的发射键和最后一个键之间的结果,因为较短的数组排序时间较长,而对象按其他值类型排序。
如果您尝试尽可能多地在CouchDB中执行验证和数据显示(例如,您正在编写“CouchApp”),那么您应该考虑使用filtered replication。这可以用来为每个用户提供他们自己的个人数据库,例如只包含他们应该看到的文档的非公共主数据库的子集。然后,您可以发出纯文档密钥,并假定您的结果只包含相关文档。
关于过滤复制在本博客文章中的使用过程,有更多的背景资料,您可以在这里找到关于特定问题的更多讨论。
您是否需要禁止访问非拥有的文档? – 2012-03-31 06:53:16
是的。最终,我想让他们有权允许其他用户查看或编辑它们。 – 2012-03-31 13:32:16