2

我最近对 ​​CouchDB 产生了兴趣,想尝试围绕它构建一个小型应用程序。

我目前邀请我的系统的方式是请求提供两件事,一个 id、一个 API 密钥和一个格式。ID 是数据库中一个文档的_id,API Key 是另一个文档的_id,它的属性为 {"valid" : true/false},格式是他们想要返回的格式。如果 API 密钥有效,系统会为给定的 ID 生成显示页面,格式为请求的格式。否则它将返回 403 统计代码。

不幸的是,我找不到从显示页面中提取另一个文档的方法。我刚刚开始使用 CouchDB,所以这里可能缺少一些简单的东西。

4

1 回答 1

4

一个_show函数,涉及到三个部分:

  1. 设计文件
  2. 设计文档中的show函数
  3. 要显示的附加文件

对于 URL 格式/db/_design/ddoc/_show/my_show_func/otherdoc

  1. 设计文件是_design/ddoc
  2. 显示功能shows.my_show_func在该设计文档中
  3. 要显示的文档_idotherdoc

这是唯一涉及的两个文件。我能想到做你描述的唯一方法是每个 API 密钥都有一个设计文档。用户会查询/db/_design/API_KEY/_show/other_doc_id. CouchDB 很放松。_show数千个具有相同或相似功能的设计文档没有错。您可以根据需要使用 HTTPCOPY方法将基本设计文档克隆到新的 API 密钥。然后,您可以通过删除设计文档来撤销 API 密钥。然而,这显然是一种独特的方法,值得三思。

最后一个考虑是(使用默认的 CouchDB,没有反向代理,mod_security 等)如果用户可以读取一个文档,他们可以读取整个数据库(例如从_all_docs查询中)。因此显示功能对软件来说是一种便利,但不是安全网关。

于 2010-08-31T19:51:50.740 回答