Потяните данные из одного дока CouchDB через IDS в другом (Python)
Вопрос
У меня есть две базы данных в CouchDB - документы DB1 - это пользовательские данные - имя, адрес электронной почты, адрес электронной почты, имя пользователя, пароль, но в одном поле, в котором я храним список ID, сохраненного в DB2, где пользовательские проекты сохраняются (содержащие поле имени пользователя и некоторые текстовые поля.
Example DB1 Document (Users)
{
"_id": "bobsmith1000",
"_rev": "83-1e00173cac0e736c9988d3addac403de",
"first_name": "Bob",
"password": "$2a$12$sdZUkkyDnDePQFNarTTgyuUZS6DL13JvBk/k9iUa5jh08gWAS5hpm",
"second_name": "Smith",
"urls": null,
"email": "bob@smith.com",
"projects": [
"ee5ccf56da22121fd71d892dbe051746",
"ee5ccf56da22121fd71d892dbe0526bb",
"ee5ccf56da22121fd71d892dbe053433",
"ee5ccf56da22121fd71d892dbe056c71",
"ee5ccf56da22121fd71d892dbe0579c3",
"ee5ccf56da22121fd71d892dbe05930d"
]
}
Example DB2 Document (Projects)
{
"_id": "ee5ccf56da22121fd71d892dbe05930d",
"_rev": "1-c923fbe9de82318980c7778c4c089321",
"url": "http://harkmastering.s3.amazonaws.com/testprojects/testfolder.zip",
"username": "bobsmith1000",
"time": "2010-10-29 07:13:47.377085",
"file_size": "5.2 MB"
}
Я пытаюсь написать просмотр в Python (используя Flask Web Framework и библиотеку Python CouchDB), которые проверят DB1, возьмите все идентификаторы проекта, а затем перейдите в DB2 и в пакетном пути вытащите URL-адрес, время, файловые файлы для Каждый документ с соответствующими идентификаторами, поэтому я могу разместить эти данные в таблице.
Я только начал программировать ранее в этом году, и это связано с методиками, которые я могу только представить. Может кто-нибудь помочь мне найти решение?
Добрый спасибо
Решение
Если у вас нет больших причин разделить ваши документы в разные дб, то кажется, это не тот случай, когда ваш вопрос, их следует держать их всех в одной базе данных и иметь некоторое свойство на документах, чтобы определить их тип (например, Тип: пользователь "и" Тип: Проект ").
Таким образом, вы можете получить желаемый результат на одном представлении CouchDB без слишком большого количества неприятностей. В вашей функции посмотра карты вам просто нужно будет излучать ключи, такие как [«Имя пользователя», 0] и [«Имя пользователя», «ProjectName»]. В JavaScript это было бы:
function(doc) {
if (doc.type == "user") {
emit([doc._id,0],null);
} else if(doc.type == "project") {
emit([doc.username,doc._id],null);
}
}
Им вы можете запрашивать этот вид и иметь организованный набор документов.