В couchdb можно определить карту и уменьшить функции в Javascript и отправить их через HTTP POST на сервер для определения представлений. Круто.Вы очищаете свою карту/уменьшаете функции перед подачей? Как?
Приложения определяют строковое представление соответствующих функций.
Я создаю приложение JS, которое подключается к couchdb, используя emacs, текстовый редактор. Это позволяет мне определить карту и уменьшить такие функции, как это:
var byname = function(doc) {
emit(doc.name,null);
};
Это дает мне EMACS подсветку синтаксиса, JSLint проверки, и так далее.
Во время выполнения я могу получить строковое представление каждого из множества зрения функций, определенных так, чтобы отправить его в CouchDB, делая это:
doc = { views: { empty: { map:stringRep(empty) },
byname: { map:stringRep(byname) },
invalid: { map:stringRep(invalid) }}};
// PUT that doc to couchdb here, to define the design_doc .
Но строковые представления включают в себя новые строки, возврат каретки и т. д.
Я мог бы фильтровать их с помощью замены регулярных выражений, которая работает для простого случая. Но есть и более сложный случай прокомментированных строк в функции. Например:
var byname = function(doc) {
// a comment here
emit(doc.name,null);
};
В этом случае stringRep будет включать в свой комментарий, но если я устранить строки и фиктивный пропуски, комментарии остаются. Я тоже мог бы заменить их, но могут быть и другие проблемы (не уверен).
Есть ли типичный или рекомендованный способ, чтобы люди санировали свои функции javascript перед отправкой их на couchdb?