Что я могу сделать для совместного использования кода между представлениями в CouchDB?
Пример 1 - служебные методы
Jesse Hallett содержит некоторые полезные утилиты, включая
function dot(attr) {
return function(obj) {
return obj[attr];
}
}
Array.prototype.map = function(func) {
var i, r = [],
for (i = 0; i < this.length; i += 1) {
r[i] = func(this[i]);
}
return r;
};
...
Где я могу поместить этот код, чтобы каждое представление могло получить к нему доступ?
Пример 2 - константы
Аналогично для констант, которые я использую в своем приложении. Где я помещаю
MyApp = {
A_CONSTANT = "...";
ANOTHER_CONSTANT = "...";
};
Пример 3 - фильтр фильтра:
Что делать, если я хочу, чтобы одно представление, которое фильтрует "это богатый человек?":
function(doc) {
if (doc.type == 'person' && doc.net_worth > 1000000) {
emit(doc.id, doc);
}
}
а другой - индексы по имени:
function(doc) {
if (doc.last_name) {
emit(doc.last_name, doc);
}
}
Как я могу объединить их в виде "богатых людей по фамилии"?
Я вроде хочу эквивалент Ruby
my_array.select { |x| x.person? }.select { |x| x.net_worth > 1,000,000 }.map { |x| [x.last_name, x] }
Как я могу быть DRYer?