如何在CouchDB中仅显示用户自己的文档?

时间:2012-03-30 02:16:01

标签: permissions couchdb filtering couchapp user-permissions

为了过滤用户自己的文档,我将文档的创建者作为密钥或密钥的一部分返回:

org.couchdb.user:user1

[org.couchdb.user:user1, otherkey]

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

otherkey

并稍后使用userCtx对其进行过滤?

1 个答案:

答案 0 :(得分:0)

答案取决于您的架构。

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

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

关于在博客文章中途使用过滤复制的更多背景信息,您可能会在此处找到有关特定问题的更多讨论。