【问题标题】:How do I show only a user's own documents in CouchDB?如何在 CouchDB 中仅显示用户自己的文档?
【发布时间】:2012-03-30 02:16:01
【问题描述】:

为了从其他人中过滤用户自己的文档,我将文档的创建者作为键或键的一部分返回:

org.couchdb.user:user1

[org.couchdb.user:user1, otherkey]

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

otherkey

然后使用userCtx 过滤它?

【问题讨论】:

  • 您是否需要禁止访问非所有文档?
  • 是的。最终,我想让他们能够允许其他用户查看或编辑它们。

标签: permissions couchdb filtering couchapp user-permissions


【解决方案1】:

答案取决于您的架构。

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

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

在这篇博文的中途有更多关于过滤复制使用的背景知识,您也可以在此处找到有关特定问题的更多讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-29
    • 2021-04-09
    相关资源
    最近更新 更多