У меня есть два документа, один с древовидной структурой, а другой - с первым документом. Я пытаюсь присоединиться к этим двум документам через fk и pk. Я не мог получить фактические результаты, и он отображает все нулевые значения.Couchdb присоединяется к двум документам, используя ключ
Первый документ
{
"name": "one",
"root": {
"level1" : {
"level2" : {
"level3" : {
"itemone": "Randomkey1",
"itemtwo": "Randomkey2
}
}
}
},
"type": "firstdoc"
}
Второй документ
{
"name" : "two",
"mapBy" : "Randomkey1",
"type" : "senconddoc
}
I`ve написал функцию карты, в котором перечислены все ключи, данные уровня 1 или 2 или 3. Теперь я хочу o присоединиться к этому первому документу и второму документу с помощью ключа. Ive попробовал два способа (сначала: Im get all (Root, Randomkey), (docName, Randomkey1), но он не делает никакого соединения. Я ищу результат, например (Root, docName)
Может кто-то помочь в исправлении этого
карта
function(doc) {
if (doc.type === 'firstdoc' || doc.type === 'seconddoc') {
var rootObj = doc.Root;
for (var level1 in rootObj) {
var level2Obj = doc.Root[level1];
for (var level2 in level2Obj) {
var keys = new Array();
var level3Obj = level2Obj[level2];
for (var i in level3Obj) {
var itemObj = level3Obj[i];
for (var i in itemObj) {
keys.push(itemObj[i]);
emit(doc.name, [itemObj[i], 0]);
var firstDocName = doc.name;
//This is gives null values
if (doc.Type === 'senconddoc' && doc.mapBy === itemObj[i]) {
emit(firstDocName , doc);
}
}
}
}
}
}
//This just lists keys to me
if (doc.type === 'senconddoc') {
emit([doc.mapBy, 1] , doc);
}
}
Даниэль, я пытаюсь понять, как будет работать вторая альтернатива. Вы имеете в виду написать два представления, затем запросить один и использовать его ответ, чтобы настроить запрос на другой в клиенте? –
@AhmedFasih nope, один вид для возврата ключей, которые сопоставляются с идентификаторами требуемых документов, затем выдает второй запрос в отношении представления all_docs (системный вид), соответствующего этим идентификаторам. Но я бы держался подальше от объединений, если бы мог, в Couch (на самом деле не используя Couch больше BTW) – Daniel