Как загрузить проектный документ в CouchDB с помощью cURL? - PullRequest
15 голосов
/ 11 декабря 2010

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

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

Каковы команды cURL для загрузки и выгрузки проектных документов CouchDB?

Ответы [ 2 ]

21 голосов
/ 11 декабря 2010

Загрузите файл проекта "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 содержит соответствующий номер ревизии. Если вы хотите изменить файл еще раз, вам необходимо сначала повторно загрузить его, чтобы получить последний номер версии.

7 голосов
/ 29 ноября 2012

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

Почему?

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

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

Такие решения - будут:

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...