Как я могу назвать другое представление в представлении couchdb?

Я только что закончил книгу "couchdb: полное руководство" и начало играть с документами дизайна. существует однако одна вещь, которую я не понимаю. Все примеры, которые я видел до сих пор, несколько линейны.

Пример:

{
   "_id": "1",
   "_rev": ".....",
   "name": "first",
   "something": "blue",   
   "child": "2"   
}

{
   "_id": "2",
   "_rev": ".....",
   "name": "second",
   "something": "green",   
   "child": "3"   
   "parent" : "1"
   }

{
   "_id": "3",
   "_rev": ".....",
   "name": "second",
   "something": "red",   
   "parent" : "2";
}

У меня нет проблемы при записи представления, которое возвращает все цвета:

function(doc) {
        if (doc.something) {
            emit(doc.something,doc._id);    
    }
}

Но что, если я хочу знать всех (!) потомков (не дети, извините моя ошибка) для элемента с _id = 1 ("что-то": "синий")? Мой опыт программирования говорит мне, что я должен использовать рекурсию, но я не знаю как. Как я могу вызвать другую функцию представления от функции представления?

В целом: эта проблема возникает при разработке базы данных со ссылками между json документами. Более конкретно с переходными отношениями между элементами.

Править: Для примера: Я только знаю _id=1, и результат должен быть чем-то как [_id=2, _id=3], потому что 2 ребенок 1, и 3 ребенок 2.

5
задан M.R. 29 July 2010 в 19:16
поделиться