2011-10-27 37 views
2

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

正如我从文档中所理解的,查看结果总是以键:值对的形式呈现。

比方说,我有一个从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"}} 
]} 

以下结果继小胡子的方法,我将能够做这样的事情:

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

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

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

我怎么能o这样做?是否有什么需要在视图函数中进行更改,或者是否可以通过视图函数完成?我需要在这里显示功能吗?如果是的话,创建一个最简单的方法是什么?问题,疑问,问题...

回答

1

如果我理解正确,您希望能够从CodeIgniter调用CouchDB并接收HTML而不是JSON。首先,我不确定你为什么要这样做,因为你已经拥有PHP以及随时随地使用的所有功能。在CouchDB中进行模板处理大多数情况下都是直接从应用程序提供的应用程序。

无论如何,如果这就是你想要的,你需要的是一个list function。您可以拨打_design/<doc>/_list/<listname>/<viewname>?vew_params与列表功能。这样list函数将会收到你的视图结果并以任何方式进行转换。

此外,如果您想用胡子进行格式化,手工操作并不十分直观,通常在CouchApp的帮助下完成。原因是,从列表(也不显示/地图/减少)功能,你不能调用别处定义的其他功能。所以你的列表函数必须包含整个mustache.js库和模板,以便它可以调用它。

+0

Thanx为您的答复。澄清:我也使用sammy.js来解析传入的JSON。所以一个JSON响应将会很好。编辑html/css/js文件并将它们反复附加到_design文件的方式不是很麻烦吗?或者我错过了什么? – Maarten

+0

从理论上讲,是的,你需要编辑html/css/js,并且一遍又一遍地重复它,这很麻烦。在实践中,人们使用CouchApp来为他们做这件事,所以它大多是没有问题的。 – Slartibartfast

+0

我还是有点困惑。如果我的应用程序位于http://app.iriscouch.com,那么www.app.com/blog是如何转换的,以便显示最新的帖子?这仍然需要像php这样的事情做对吗? – Maarten

相关问题