CouchDB在设计文档中查看或显示?

时间:2011-10-27 11:36:50

标签: codeigniter couchdb mustache

我目前正在努力解决CouchDB在视图和show函数之间的差异。我正在使用CodeIgniter通过curl查询CouchDB。我在_design文档中没有附加模板。每个模板都通过CI的视图方法加载为纯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}}

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

1 个答案:

答案 0 :(得分:1)

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

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

此外,如果你想用胡子格式化它,手动这样做并不是很简单,通常是在CouchApp的帮助下完成的。原因是从list(也没有show / map / reduce)函数你不能调用别处定义的其他函数。所以你的list函数必须包含整个mustache.js库和模板,以便它可以调用它。