如何在 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 中仅显示用户自己的文档?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 在 Couchdb 中显示所有文档

如何仅为特定用户和角色显示和复制文档?

如何按字段对文档进行分组并使用带有 CouchDB 视图的自定义 reduce 函数列出不相等的值

如何在CouchDB中实现唯一键约束

限制在 couchdb 中匿名删除文档

CouchDB 文档建模原则