【问题标题】:CouchDB view or show in design document?CouchDB 在设计文档中查看或显示?
【发布时间】:2011-10-27 11:36:49
【问题描述】:

我目前正在为 CouchDB 的视图和显示功能之间的差异而苦苦挣扎。我正在使用 CodeIgniter 通过 curl 查询 CouchDB。我在 _design 文档中没有附加模板。每个模板都通过 CI 的 view 方法加载为纯 HTML。在 Mustache.js 的帮助下,我希望能够使用 Mustache 的伪变量。

我从文档中了解到,视图结果始终以键:值对的形式呈现。

假设我从http://127.0.0.1:5984/blog/_design/entries/_view/all得到以下结果

{"total_rows":2,"offset":0,"rows":[
{"key":"56a13b96ea3492ef8c7e554f67000952","value":{title:"First post"}},
{"key":"56a13b96ea3492ef8c7e554f670015a9","value":{title:"Second post"}}
]}

按照 Mustache 的方法,我可以做这样的事情:

{{#rows}}
  <div class="entry">
    <h1>{{#value}}{{title}}{{/value}}</h1>
  </div>
{{/rows}}

这是可以接受的,但我宁愿这样做:

{{#entries}}
  <div class="entry">
    <h1>{{title}}</h1>
  </div>
{{/entries}}

我怎么能做到这一点?视图函数中是否需要更改某些内容,或者这不能通过视图函数完成?我需要在这里显示功能吗?如果是,创建一个最简单的方法是什么?问题,问题,问题......

【问题讨论】:

    标签: codeigniter couchdb mustache


    【解决方案1】:

    如果我理解正确,您希望能够从 CodeIgniter 调用 CouchDB 并接收 HTML 作为响应而不是 JSON。首先,我不确定您为什么要这样做,因为您已经拥有 PHP 并且所有这些都可以随心所欲地使用。 CouchDB 中的模板对直接从它提供服务的应用程序很有意义。

    无论如何,如果这是您想要的,您需要的是list function。您可以使用_design/&lt;doc&gt;/_list/&lt;listname&gt;/&lt;viewname&gt;?vew_params 调用列表函数。这样list 函数将接收您的视图结果并以任何方式对其进行转换。

    此外,如果您想用小胡子对其进行格式化,手动操作并不是很简单,通常在CouchApp 的帮助下完成。原因是从列表(也不是显示/映射/减少)函数中,您不能调用其他地方定义的其他函数。因此,您的列表函数必须包含整个 mustache.js 库和模板,以便它可以调用它。

    【讨论】:

    • 感谢您的回复。澄清一下:我也在使用 sammy.js 来解析传入的 JSON。所以一个 JSON 响应就可以了。不得不编辑 html/css/js 文件然后一遍又一遍地将它们附加到 _design 文档中,这不是很麻烦吗?还是我在这里遗漏了什么?
    • 理论上,是的,您需要编辑html/css/js并一遍又一遍地附加它们,这很麻烦。在实践中,人们使用 CouchApp 为他们做这件事,所以这几乎没有问题。
    • 我还是有点疑惑。如果我的应用程序位于app.iriscouch.com,如何转换网址 www.app.com/blog 以显示最新帖子?那仍然需要像php这样的东西来做对吗?
    • @user983693 您可以在github.com/jchris/sofa找到一个基于 CouchDB 构建的示例博客
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多