У нас есть CouchDB-представление базы данных XML, которое мы используем для обеспечения работы внешнего интерфейса на основе JavaScript для манипулирования документами XML. Базовая структура представляет собой простую трехуровневую иерархию. т.е.
A -> B -> C
A: родительский документ (тип A)
B: любое количество дочерних документов родительского типа A
C: любое количество дочерних документов родительского типа B
Мы представляем эти 3 типа документов в CouchDB с атрибутом type
:
например.
{
"_id":"llgc-id:433",
"_rev":"1-3760f3e01d7752a7508b047e0d094301",
"type":"A",
"label":"Top Level A document",
"logicalMap":{
"issues":{
"1":{
"URL":"http://hdl.handle.net/10107/434-0",
"FILE":"llgc-id:434"
},
"2":{
"URL":"http://hdl.handle.net/10107/467-0",
"FILE":"llgc-id:467"
etc...
}
}
}
}
{
"_id":"llgc-id:433",
"_rev":"1-3760f3e01d7752a7508b047e0d094301",
"type":"B",
"label":"a B document",
}
То, что я хочу сделать, - это создать представление, которое возвращает документы точно так же, как тип A, но включает атрибут метки из документа B в списке logicMap, например
{
"_id":"llgc-id:433",
"_rev":"1-3760f3e01d7752a7508b047e0d094301",
"type":"A",
"label":"Top Level A document",
"logicalMap":{
"issues":{
"1":{
"URL":"http://hdl.handle.net/10107/434-0",
"FILE":"llgc-id:434",
"LABEL":"a B document"
},
"2":{
"URL":"http://hdl.handle.net/10107/467-0",
"FILE":"llgc-id:467",
"LABEL":"another B document"
etc...
}
}
}
}
Я изо всех сил пытаюсь обдумать лучший способ выполнить это. Похоже, все должно быть довольно просто!