2016-02-26 3 views
0

Если возможно, как я могу выполнить следующие перезаписи URL-адресов, используя PouchDB Server?Переписывать URL-адреса в CouchDB/PouchDB-сервере

В /index.html отобразите вывод HTML /index/_design/index/_show/index.html.

/my_database/index.html, дисплей /my_database/_design/my_database/_show/index.html.

Моя цель - использовать PouchDB (и в конечном итоге CouchDB) в качестве автономного веб-сервера.

Я изо всех сил пытаюсь перевести rewrite documentation в рабочий код.

+0

Вы хотите использовать одиночную оконечную точку _rewrite для доступа к нескольким базам данных (что это похоже на здесь)? Я не уверен, как PouchDB Server обрабатывает его, но CouchDB не позволяет это по умолчанию. В противном случае важно помнить, что все значения «to» относятся к документу дизайна, который содержит ключ 'rewrites', поэтому' 'to": "_show/index.html" ' – BigBlueHat

+0

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

+0

Не могли бы вы объяснить немного больше о том, что вы пытаетесь выполнить? Похоже на то, что вы, возможно, злоупотребляете базами данных и показываете функции. Хотелось бы узнать больше, поэтому я могу помочь лучше! :) – BigBlueHat

ответ

1

Apache CouchDB использует HTTP API и (следовательно) может быть использован в качестве статического веб-сервера - по аналогии с Nginx или Apache HTTPD, но с дополнительным преимуществом, что вы можете также использовать представления MapReduce, репликация, и другие биты, которые делают Up Apache CouchDB.

Учитывая только основной API, вы можете хранить весь статический сайт в виде вложений в одном документе JSON и обслуживать каждый файл со своего собственного URL-адреса. Если этот единственный документ является документом _design, вы получаете добавленную стоимость перезаписывающего устройства.

Вот пример лже JSON документ, который будет делать только что:

{ 
    "_id": "_design/site", 
    "_attachments": { 
    "index.html": { 
     "content_type": "text/html", 
     "data": "..." 
    }, 
    "images/logo.png": { 
     "content_type": "image/png", 
     "data": "..." 
    }, 
    "rewrites": [ 
    { 
     "from": "/", 
     "to": "index.html" 
    } 
    ] 
} 

Фактическое значение "data": "..." было бы в формате base64 версию файла. См. Пример Creating Multiple Attachments в CouchDB Docs.

Вы также можете использовать пользовательский интерфейс администратора для CouchDB, такой как Futon или Fauxton, - доступно по адресу http://localhost:5984/_utils - оба из которых предлагают функции загрузки файлов. Тем не менее, эти системы потребуют, чтобы документ JSON существовал в первую очередь и вносил PUT the attachment в базу данных напрямую.

Как только это будет завершена, вы можете настроить virtual host запись в CouchDB (или Cloudant), который указывает на _rewrite конечную точку в пределах этого проекта документа. Как так:

[vhosts] 
example.com = /example-com/_design/site/_rewrite/ 

Если вы не хостинг на порт 80, то вам необходимо обратиться к сайту в http://example.com:5984/.

Использование функции _show (как в вашем примере) необходимо только в том случае, если вы хотите преобразовать JSON в HTML (или другой JSON, XML, CSV и т. Д.). Если вам нужен только статический хостинг, то вышеприведенный вариант работает сказочно.^_^

Есть также отличные инструменты для создания этих документов. couchapp.py и couchdb-push - это те, которые я использую чаще всего, и обе поддерживают CouchApp filesystem mapping "spec".

Надеюсь, что это поможет!

+0

Удивительно, спасибо! Мне не хватало часть «vhosts», поэтому она не могла найти переписывание. Я также должен был загрузить 'index.html' вместо того, чтобы давать объект' _attachments' (я предполагаю, что это то, что вы имели в виду под псевдонимом json). Может быть, стоит обновить ответ с этими требованиями? – MattMS

+0

Мой плохой. Вам нужно, чтобы base64 кодировал значение 'data', даже когда оно просто следующее: http://docs.couchdb.org/en/1.6.1/api/document/common.html#creating-multiple-attachments Кажется, вы использовать Futon или Fauxton для загрузки - это здорово! - возможно, он напрямую запустит файл http://docs.couchdb.org/en/1.6.1/api/document/attachments.html#put--db-docid -attname – BigBlueHat

+0

@MattMS, я обновил ответ для соответствия. Надеюсь, что прояснит любую путаницу! Приветствия. – BigBlueHat

Смежные вопросы