Потяните данные из одного дока CouchDB через IDS в другом (Python)

StackOverflow https://stackoverflow.com/questions/4052220

  •  27-09-2019
  •  | 
  •  

Вопрос

У меня есть две базы данных в 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);
 }
}

Им вы можете запрашивать этот вид и иметь организованный набор документов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top