【问题标题】:Why does only one of these CouchDB views work?为什么这些 CouchDB 视图中只有一个有效?
【发布时间】:2012-05-17 07:55:25
【问题描述】:

我在 CouchDB 中有一些类型为:"Person" 和类型为 "Account" 的文档。

对于这些类型的所有文档的直接列表,我在_design/directory_views 创建了以下设计文档:

{
   "_id": "_design/directory_views",
   "_rev": "21-f5df9253504e66f28393f4bda360e110",
   "views": {
       "all_persons": {
           "map": "(function(doc) { if (doc.type == \"Person\") { emit(null, { 'last_name': doc.last_name, 'first_name': doc.first_name }); } })"
       },
       "all_accounts": {
           "map": "(function(doc) { if (doc.type == \"Account\") { emit(null, { 'username': doc.username }); } })"
       }
   }
}

此 JSON 在 JSONLint 上进行验证,并在将文档保存在 Futon 的源视图中时被接受。

Futon 按预期在下拉列表中列出directory_views/all_persons 和directory_views/all_accounts。 all_persons 创建"Person" 类型的正确文档列表,但all_accounts 重定向回顶层All Documents,并列出所有内容。

为什么all_persons 有效,但all_accounts 失败?

PS。到目前为止,我在许多设计文档中都经历过这种行为。这个例子http://kore-nordmann.de/blog/couchdb_a_use_case.html#a-practical-example 在同一个设计文档中显示了两个视图,所以我不认为每个文档只能有一个视图。

【问题讨论】:

  • 我没有遇到任何问题,您使用的是哪个版本的 CouchDB?你的文件是什么样的?为了以防万一,你试过在蒲团外面玩吗?
  • 嗯...似乎已经修复了。我根本没有更新文档,只是在本地机器上尝试过——视图的行为符合预期。我怀疑这可能是代理服务器很聪明。我没有在 Futon 之外尝试过直接的 HTTP 请求,但这是一个很好的建议,如果代理妨碍了我,我会告诉我(非 Futon 请求不会被缓存)。我会接受你的回答。谢谢!
  • 是的,刚刚证实了这一点——使用蒲团外的视图效果很好。 - 还在非代理连接上进行了尝试,这也有效。我认为代理正在缓存它不应该缓存的东西。再次感谢!

标签: json couchdb couchdb-futon design-documents


【解决方案1】:

尝试直接访问您的视图(即在 Futon 之外)以查看其行为是否相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多