如何在 CouchDB 中仅显示用户自己的文档?
Posted
技术标签:
【中文标题】如何在 CouchDB 中仅显示用户自己的文档?【英文标题】:How do I show only a user's own documents in CouchDB? 【发布时间】:2012-03-30 02:16:01 【问题描述】:为了从其他人中过滤用户自己的文档,我将文档的创建者作为键或键的一部分返回:
org.couchdb.user:user1
或
[org.couchdb.user:user1, otherkey]
这是创建“我的文档”页面的最佳方式吗?或者我可以简单地返回另一个键
otherkey
然后使用userCtx
过滤它?
【问题讨论】:
您是否需要禁止访问非所有文档? 是的。最终,我想让他们能够允许其他用户查看或编辑它们。 【参考方案1】:答案取决于您的架构。
如果您的客户端和数据库之间存在某种“中间件”,您可以通过查询 ?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",]
来限制从您描述的第二个视图模式 ([org.couchdb.user:user1, otherkey]
) 获取数据。这将结果限制在第一个可能发出的键和最后一个键之间的结果,因为较短的数组在较长的数组之前排序,而对象在其他值类型之后排序。
如果您尝试在 CouchDB 中进行尽可能多的验证和数据显示(例如,您正在编写“CouchApp”),那么您应该考虑使用 filtered replication。这可用于为每个用户提供自己的个人数据库,例如非公共主数据库的子集,仅包含他们应该看到的文档。然后,您可以只发出普通的文档键,并假设您的结果将仅包含相关文档。
在这篇博文的中途有更多关于过滤复制使用的背景知识,您也可以在此处找到有关特定问题的更多讨论。
【讨论】:
以上是关于如何在 CouchDB 中仅显示用户自己的文档?的主要内容,如果未能解决你的问题,请参考以下文章