Я только что закончил книгу "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.