couchdb как получить документ по идентификатору в функции карты - PullRequest
2 голосов
/ 24 августа 2011

Предположим, у нас есть два типа документов.Один - хранит метаданные, многие другие - имеют сложную обработку, в зависимости от состояния первого документа.Мы не хотим дублировать состояние во всех документах второго типа, потому что их много.Как разработать функцию MAP для получения данных из документа первого типа.

{ "_id":"123",
   "public":true 
}
{
"_id":"321",
"owner_id":"123"
"data":"..."
}
function(doc) {
   if (doc._id=="321"){
        // How do get another document like in python, for example
        var doc2 = db[doc.owner_id];
        if (doc2.public) {
           emit(doc._id, null);
       }
   }
}

1 Ответ

4 голосов
/ 24 августа 2011

Вы можете сделать это;

function(doc) {
  emit(doc._id, {"_id":doc.owner_id});
}

Тогда, когда вы это сделаете? Key = 321 & include_docs = true, включенным будет документ с идентификатором doc.owner_id, а не 321.

Подробнеездесь: http://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Linked_documents

...