Использование CouchDB для обслуживания HTML - PullRequest
8 голосов
/ 16 декабря 2009

Я пытаюсь использовать CouchDB с HTML / автономной REST-архитектурой. То есть никакой другой сервер приложений, кроме CouchDB и javascript в стиле ajax, не вызывает CouchDB.

Похоже, что кросс-скриптинг является проблемой. Раньше я пользовался Cloudkit / Tokyo Cabinet, и похоже, что нужная функция обратного вызова ввернула его в URL.

Теперь я пробую CouchDB и получаю ту же проблему.

Вот мои вопросы:

1) Эти проблемы связаны с тем, что хранилище REST / JSON, такое как CouchDB или CloudKit, работает на другом порту, отличном от моей веб-страницы? Они оба запускаются локально и вызываются с "localhost".

2) Должен ли я позволить CouchDB разместить мою страницу и обслуживать HTML?

3) Как мне это сделать? Документация не казалась такой ясной ...

Спасибо, Alex

Ответы [ 5 ]

10 голосов
/ 04 января 2010

Ответ прост: сохраняйте статический HTML в виде вложений в документы CouchDB. Таким образом, вы можете использовать HTML прямо из CouchDB.

Для этого есть инструмент командной строки, который называется CouchApp

.

В книге Mikeal, связанной с , также есть глава (Управление документами проектирования) о том, как использовать CouchApp для этого.

7 голосов
/ 06 мая 2010

3) вы можете использовать CouchDB показывает для генерации HTML (или любого типа контента)

6 голосов
/ 17 декабря 2009

CouchDB предоставляет огромные преимущества для обслуживания / генерации вашего HTML.

С одной стороны, страницы (которые являются ресурсами HTTP) привязаны к данным или к запросам к данным, и CouchDB знает, когда обновить etag, когда страница изменилась. Это означает, что если вы поместите nginx перед CouchDB и скажете «кеширование», вы получите все бесплатное кеширование, которое обычно требуется для сборки самостоятельно.

Я бы настаивал на nginx> apache перед CouchDB, потому что Apache не так уж хорош в обработке одновременных соединений, а nginx + erlang (CouchDB) хорош в этом.

Кроме того, вы можете написать эти представления в JavaScript, которые хорошо документированы в книге CouchDB http://books.couchdb.org/relax/ или в Python, используя мой сервер представлений http://github.com/mikeal/couchdb-pythonviews, который пока что на самом деле не документирован, но я скоро доберусь до него:)

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

3 голосов
/ 17 декабря 2009

Я думаю, что один из способов - это через mod_proxy в Apache. Он передает запрос от Apache к Couchdb, поэтому может решить проблему кросс-скриптинга.

# Configuration file for proxy
ProxyVia ON

ProxyPass /couchdb http://<<couchdb host>>:5984/sampleDB
ProxyPassReverse /couchdb http://<<couchdb host>>:5984/sampleDB
0 голосов
/ 16 декабря 2009

Не могу не подумать, что вам нужен какой-то слой между слоем представления (HTML) и моделью (CouchDB).

Таким образом, вы можете выполнять запросы, предоставлять дополнительные возможности и функциональность. В настоящий момент вы, похоже, визуализируете сохраненные объекты непосредственно на уровне представления, и у вас не будет возможности изменить или расширить поведение вашей системы в будущем.

Принятие архитектуры model-view-controller изолирует вашу модель от уровня представления и даст вам некоторую гибкость в будущем.

(Признаюсь, я не могу консультировать по вашим вопросам межсайтового скриптинга)

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