我目前正在努力解决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}}
我怎么能这样做?是否需要在视图函数中更改某些内容,或者这不能通过视图函数完成?我在这里需要演出功能吗?如果是,创建一个最简单的方法是什么?问题,问题,问题......
答案 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库和模板,以便它可以调用它。