В голову приходит только такой вариант:
-создаем документ например type=«myForm» содержащий кроме всего прочего массив полей:
{
…
type:«myForm»,
fields:[
{
name:«Имя»,
type:«textbox»,
id:«itemName»,
required:true
…
},
…
]
…
}
-на стороне обработчика (на серверной, либо если вы не используете сервер а работаете с CouchDB прямо из яваскрипта, то там) выбираем этот документ (например создав view по типам)
-Генерируете форму пробегаясь по массиву, отдаете пользователю. Для этого нужно будет написать код для генерации полей нужных вам типов.
-После заполнения, если это необходимо, контролируете заполнение, выбрав снова документ схемы из кауча, пробегаете по массиву пришедших данных, вырезая из него поля которых нет в схеме и контролируете значения не соответствие схеме.
-загоняете новые данные в кауч.
Но я бы вам советовал трижды подумать прежде чем использовать кауч. На виндоус по крайней мере у меня куча проблем с ним была. Сначала натолкнулся на баг Erlang, ограничивающий максимальный размер файла четырьмя гигами (http://wiki.apache.org/couchdb/Installing_on_Windows) Его пофиксили, но пока нашел фикс, пока накатил… Потом база сама начала рассыпаться при достижении файлом индексов размера 6-8Гб. Раза 2-3 было. Может конечно из-за того, что я сервер перезагрузил во время перегенерации view, но все равно это не хорошо. А если бы там критичная бизнес информация лежала, а сервер по питанию кто-нибудь передернул? В общем я ему теперь не очень доверяю.