Проектная документация в CouchDB

{title}

Документы проектирования или документы проектирования в CouchDB представляют собой особый тип документов, в которые мы можем включить код приложения, это возможно, потому что структурирование нашего механизма базы данных позволяет нам получить доступ к API и с ним выполнять все Необходимые действия.
Языком по умолчанию, который мы можем использовать в документах этого типа, является JavaScript, поэтому он идеально подходит для готовых приложений, если мы полагаемся на технологии, такие как Node.js, и инфраструктуры для Front-End, такие как AngulaJS, Backbone.js и тому подобное.

требования


1 - Чтобы запустить этот учебник, нам сначала нужна установка CouchDB, для первых шагов вы можете взглянуть на следующий учебник. Эта установка должна иметь разрешения на запуск в нашем пользовательском сеансе. Если у пользователя есть пользователь, мы должны знать пароль для создания документов.
2 - Нам также понадобится инструмент cURL для отправки запросов через HTTP и, таким образом, мы сможем использовать API CouchDB .
3. Наконец, нам нужен текстовый редактор, чтобы иметь возможность создавать файлы JSON, которые мы будем использовать, разумеется, с соответствующими разрешениями для сохранения на диск.
В этом уроке мы будем использовать Windows 7, поэтому, возможно, будут некоторые команды, которым потребуется эквивалент в другой операционной системе.

Типовые документы


При работе с CouchDB нам нужно создавать документы, которые имеют значение для конечного пользователя, то есть что-то, что может быть отображено и имеет значение без особой необходимости.
Виртуальные документы

Эти типы документов известны как виртуальные документы и позволяют нам одним запросом или запросом загрузить все необходимые данные без проблем. Обычно он используется, когда мы хотим смешать разные типы записей в одном запросе, например, статью блога и разные комментарии.
Существуют другие типы документов, называемые журналом событий, которые мы можем использовать в тех случаях, когда нам требуется ввод данных пользователя, и по этой причине нам нужны дополнительные проверки, хотя их также можно использовать, когда нам нужно асинхронно запускать какую-то задачу.
Сервер запросов

Сервер запросов CouchDB выполнен на JavaScript, поэтому использование этого языка возможно по умолчанию без какой-либо дополнительной настройки, однако существуют реализации на других языках для работы с этим сервером и построения проектных документов. Вы вводите конфигурацию через JSON .

Наш первый проектный документ


В проектном документе мы можем определить так называемые представления и представления, каждый из которых содержит особый способ отображения данных, об этом будет рассказано позже, а сейчас мы сконцентрируемся на создании нашего первого документа.
Нам нужно создать базу данных на нашем сервере CouchDB, и в нее мы должны добавить один или несколько документов, в нашем случае мы создали один, называемый рецептами, и содержит поле заголовка, а другое поле - ингредиенты.
Эта база данных выглядит так:

{title}


Как только у нас есть данные, загруженные в нашу базу данных, мы должны построить документ, для этого мы создадим файл с именем в нашем случае recipes-couch.js и добавим следующий код:
 {"language": "javascript", "views": {"all": {"map": "function (doc) {emit (doc.titulo, doc)}"}, "by_titulo": {"map": "function (doc) {if (doc.titulo! = null) emit (doc.titulo, doc)}"}, "by_ingredientes": {"map": "function (doc) {if (doc.ingredientes! = null ) emit (doc.ingredientes, doc)} "}}, " shows ": {" recipes ":" function (doc, req) {return '

'+ doc.titulo +'

'} "}}
Это не что иное, как простой JSON, в котором мы сначала определяем язык как JavaScript, а затем создаем элемент с именем views, в котором мы создаем 3 вида: общий, один по заголовку и один по ингредиентам. Наконец мы создаем шоу, где мы показываем название нашего рецепта.
JSON Validate

Важно отметить, что если наш JSON не имеет надлежащей конформации, мы получим ошибку от сервера CouchDB, и мы не сможем выполнить наши инструкции, поэтому важно проверить, является ли наш JSON действительным, для этого есть некоторые онлайн-инструменты, такие как jsonlint .com.
Теперь, используя cURL, мы должны передать этот файл на наш сервер CouchDB, поскольку этот тип документов является «специальным», мы не можем позволить серверу быть тем, кто назначает имя случайным образом, поэтому вместо использования метода POST мы должны использовать метод PUT, который заключается в создании новых элементов.
Затем все наши проектные документы должны идти по пути _design нашей базы данных, и после этого помещать соответствующее имя. Давайте посмотрим, как мы можем передать сохраненный документ на наш сервер.
Сначала запустим в консоли следующее:

 curl.exe -X PUT -d @filename 'http://127.0.0.1:5894/basedatos/_design/name 
Это основной способ включения документа в нашу базу данных, конечно, выполнение cURL будет меняться в зависимости от нашей операционной системы, и соединение с сервером будет зависеть от того, включена ли у нас аутентификация пользователя.
Здесь важно подчеркнуть, что имени нашего файла должен предшествовать символ @, так как если мы этого не сделаем, cURL будет ожидать содержимого файла напрямую, и по очевидным причинам удобства использования нецелесообразно записывать непосредственно JSON в консоли.
В случае нашей среды тестирования вышеизложенное будет выглядеть следующим образом:
 curl.exe -X PUT -d recipes-couch.js http: // root: : 5984 / recipes / _design / recipes 
Где его запустить, мы получим следующее в нашей консоли:

$config[ads_text5] not found

{title}


Как мы видим, мы уже создали наш первый проектный документ в CouchDB . Если мы войдем в Futon, то увидим, что наш проектный документ уже существует, и даже дает нам подробную информацию о различных видах и показах, которые у нас есть:

{title}


Теперь, если мы хотим каким-то образом увидеть утилиту для всего того, что мы создаем, нам нужно только войти из браузера и со следующей структурой мы можем сделать запрос к нашему шоу, который даст нам результат:
 http: // localhost: 5984 / имя_базы_данных / _design / DesignDocumentName / _show / ShowName / docid 
Давайте посмотрим, какие результаты запроса мы вставили в нашу тестовую среду:

$config[ads_text5] not found

{title}


Как мы видим, это довольно просто, если мы посмотрим на определение шоу в нашем файле JSON, то заметим, что мы сделали, напечатав заголовок после некоторых меток

Таким образом, ответ интерпретируется в нашем браузере как HTML- документ.
То же самое можно сделать с представлениями или представлениями, только на этот раз вместо определения конкретного идентификатора документа мы будем использовать имена представлений, давайте посмотрим:

{title}


Мы отмечаем, что в этом случае мы просто указали имя нашего представления by_ingredients, с этим мы получаем результат в JSON, но у него также есть другая функция, и это то, что мы можем выполнять поиск, так как мы создали индексы, таким образом давая немного большую производительность Наш движок базы данных . Так как CouchDB будет только просматривать все документы в первый раз, и последующие звонки или запросы не потребуют этой обработки.
Мы можем делать запросы через так называемые ключи или ключи, и это может быть сделано непосредственно в запросе по URL в нашем представлении, чтобы мы могли устанавливать диапазоны, точные слова, уникальные значения и т. Д.
Некоторые операторы, которые мы можем использовать:
StartKey

Представляет начальное значение для поиска в представлении.
EndKey

Представляет окончательное значение, чтобы остановить поиск в представлении.
ключ

Представляет точное значение поиска в представлении.
Давайте посмотрим, как мы можем сделать небольшой пример с этим, мы собираемся найти рецепт, который содержит чеснок в качестве ингредиента, в нашем случае мы должны получить рецепт «Соус песто».

{title}


Мы отфильтровали один документ из двух, которые мы изначально загрузили в нашу базу данных, это дает нам лишь небольшое приближение того, насколько мощным является этот инструмент.
Если мы добавим конечный ключ, мы можем сделать более широкую фильтрацию, добавив диапазон, поэтому мы оставляем им домашнее задание, чтобы они могли исследовать и совершать ошибки, таким образом продвигая долговечность в памяти всего изученного.
На этом мы завершили этот урок, так как видим, что инструмент конструкторской документации очень мощный, потому что он не только позволяет нам создавать представления и показы, но и потому, что они могут иметь гораздо более сложную обработку JavaScript, чем мы здесь описываем, включая операции со значениями, условно операции в DOM и т. д. все, чего мы можем достичь с помощью языка, можно эффективно включить в CouchDB, поэтому создание приложений с использованием только JavaScript очень возможно.