Функция _show
включает три части:
- Проектный документ
- Функция показа внутри проектного документа
- Дополнительный документ
Для формата URL /db/_design/ddoc/_show/my_show_func/otherdoc
:
- Проектный документ:
_design/ddoc
- Функция показа
shows.my_show_func
в пределахэтот проектный документ - Документ, который будет показан, имеет
_id
из otherdoc
Это два только двух документов.Единственный способ сделать то, что вы описываете, - это оформить документ на ключ API.Пользователь запросит /db/_design/API_KEY/_show/other_doc_id
.CouchDB расслаблен.Нет ничего плохого в тысячах дизайнерских документов с одинаковыми или похожими функциями _show
.Вы можете использовать метод HTTP COPY
, чтобы при необходимости клонировать документ базового проекта в новый ключ API.Затем вы можете отозвать ключ API, удалив конструкторский документ.Однако это, очевидно, уникальный подход, о котором стоит подумать.
И последнее соображение (с CouchDB по умолчанию, без обратных прокси, mod_security и т. Д.), Если пользователь может прочитать один документ, он может прочитатьвся база данных (например, из запроса _all_docs
). Поэтому функции show удобны для программного обеспечения, а не для шлюза безопасности.