Как загрузить документ дизайна в CouchDB с помощью cURL?

Я пытаюсь изучить CouchDB, и я могу создавать представления и т.д. в Futon, но я хочу написать свои проектные документы на рабочем столе и загрузить их с помощью cURL. "Окончательное руководство" показывает обновление документов содержания с помощью cURL, но все проектные документы - это Futon или CouchApp.

Я хочу загрузить текущий проект doc в локальный файл, отредактировать файл, а затем отправить его обратно в CouchDB.

Какие команды cURL загружают и загружают проектные документы CouchDB?

Ответы

Ответ 1

Загрузите файл проекта "task" в базе данных "dev-task" в файл "task.json":

curl http://localhost:5984/dev-task/_design/task > task.json

После редактирования файла вы можете вернуть его обратно.

curl -X PUT http://localhost:5984/dev-task/_design/task -d @task.json

Это работает, потому что task.json содержит соответствующий номер ревизии. Если вы хотите снова изменить файл, вам нужно сначала его загрузить, чтобы получить последний номер версии.

Ответ 2

Несмотря на то, что ответ от Victor Nicollet верен, в большинстве случаев целесообразно взглянуть на инструменты CLI, такие как CouchApp.  - Легкий старт и очень эффективный. Кроме того, эти инструменты стабильны, уже давно достигли зрелости и постоянно совершенствуются сообществом разработчиков.

Почему?

  • Дизайн-документ - это объекты JSON, и они известны для scufold, которые они перегружают в своем редакторе. Например, нет комментариев, каждая строка, включая ключевые атрибуты, должна быть обернута в строки и т.д.
  • Документы JSON не предназначены для хранения функций. Решение Couch-DB должно требовать, чтобы функции были сжаты, что затрудняет их редактирование. Редактор должен будет преобразовать функцию в рабочий формат, отредактировать ее и снова выполнить ее.
  • CouchDB требует, чтобы обдуманный документ соответствовал существующей версии (и повторяет вашу следующую версию при успешном обновлении). Это требует от редактора отслеживать версии и использовать их каждый раз, когда он хочет применить обновление.
  • Вложения, которые, например, являются элементарными для повторного использования кода между функциями карты или часто используются для приложений, которые обслуживаются непосредственно с веб-сервера CouchDB, трудно справиться, поскольку каждое вложение обычно загружается отдельно или с еще больше scufold.

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

Такие решения - это:

  • CouchApp в нем 2 варианта (python и NodeJS)
  • Kanzo (это на самом деле гораздо больше, а не для всех, но, безусловно, стоит упомянуть)

Я лично использую couchapp через NodeJS. Удачи:)

ОБНОВЛЕНО, ~ 2 года спустя

Вот еще один инструмент, который стоит упомянуть, хотя я должен буду сказать, что я биос. Он называется ddocs. Он основан на тех же принципах, что и node -couchapp, и он направлен на непрерывные потоки интеграции, а также на личное развитие. Он использует выделенный раздел в файле package.json для хранения информации о развертывании ddocs и позволяет разработчику/серверу сборки переопределять любую конфигурацию с использованием аргументов CLI.