为了过滤用户自己的文档,我将文档的创建者作为密钥或密钥的一部分返回:
org.couchdb.user:user1
或
[org.couchdb.user:user1, otherkey]
这是创建“我的文档”页面的最佳方式吗?或者我可以简单地返回另一个键
otherkey
并稍后使用userCtx
对其进行过滤?
答案 0 :(得分:0)
答案取决于您的架构。
如果您的客户端与数据库之间存在某种“中间件”,则可以通过查询[org.couchdb.user:user1, otherkey]
来限制从您描述的第二种视图模式(?startkey=["org.couchdb.user:user1"]&endkey=["org.couchdb.user:user1",{}]
)获取数据。这会将结果限制为第一个可能发出的键和最后一个键之间的结果,因为较短的数组会在更长的时间内排序,而对象会在其他值类型之后排序。
如果您尝试尽可能多地在CouchDB中进行验证和数据显示(例如,您正在编写“CouchApp”),那么您应该考虑使用filtered replication。这可以用于为每个用户提供他们自己的个人数据库,例如非公共主数据库的子集,仅包含他们应该看到的文档。然后,您只需发出纯文档密钥,并假设您的结果只包含相关文档。
关于在博客文章中途使用过滤复制的更多背景信息,您可能会在此处找到有关特定问题的更多讨论。