CouchDB посмотреть или показать в дизайн-документе? - PullRequest
2 голосов
/ 27 октября 2011

В настоящее время я немного борюсь с разницей в CouchDB между функциями просмотра и отображения.Я использую CodeIgniter для запроса CouchDB через curl.У меня нет прикрепленных шаблонов в _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"}}
]}

Следуя методологии Усов, я смог бы сделать что-то подобное:

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

Это приемлемо, но я бы предпочелсделать что-то вроде этого:

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

Как я могу это сделать?Есть ли что-то, что нужно изменить в функции просмотра, или это просто невозможно сделать с помощью функции просмотра?Нужно ли здесь показывать функции?Если да, какой самый простой способ создать его?Вопросы, вопросы, вопросы ...

1 Ответ

1 голос
/ 27 октября 2011

Если я правильно понимаю, вы хотите иметь возможность вызывать CouchDB из CodeIgniter и получать HTML в качестве ответа вместо JSON. Во-первых, я не уверен, почему вы хотите это сделать, потому что у вас уже есть PHP и все, что идет с ним в вашем распоряжении. Шаблонирование в CouchDB в основном имеет смысл с приложениями, обслуживаемыми непосредственно из него.

В любом случае, если это то, что вам нужно, вам нужна функция list . Вы можете вызвать функцию списка с помощью _design/<doc>/_list/<listname>/<viewname>?vew_params. Таким образом, функция list получит результат вашего просмотра и преобразует его любым способом.

Далее, если вы хотите отформатировать его с усами, сделать это вручную не совсем просто и обычно это делается с помощью CouchApp . Причина в том, что из функции списка (ни показа / отображения / уменьшения) вы не можете вызывать другие функции, определенные в другом месте. Таким образом, ваша функция списка должна включать всю библиотеку mustache.js и шаблоны, чтобы она могла вызывать ее.

...