Pergunta

Eu tenho dois bancos de dados no CouchDB - os documentos do DB1 são dados do usuário - nome, endereço de email, nome de usuário, senha, mas em um campo que eu armazenei uma lista dos IDs salvos no DB2, onde os projetos de usuário são salvos (contendo um campo de nome de usuário e alguns campos de texto.

    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"
}

Estou tentando escrever uma visualização no Python (usando a estrutura da web do Flask e a Biblioteca Python Couchdb) que verificará o DB1, pegam todos os IDs do projeto e depois vão para o DB2 e, de uma maneira, puxará o URL, o tempo, o tamanho do arquivo para Cada documento com IDs correspondentes para que eu possa colocar esses dados em uma tabela.

Eu só comecei a programar no início deste ano e isso envolve técnicas que só posso imaginar. Alguém pode me ajudar a encontrar uma solução?

Gentil obrigado

Foi útil?

Solução

A menos que você tenha ótimos motivos para dividir seus documentos em diferentes DBs, isso parece que não é o caso de acordo com sua pergunta, você deve mantê -los todos no mesmo banco de dados e ter alguma propriedade nos documentos para identificar seu tipo (como um " Tipo: Usuário "e" Tipo: Projeto ").

Dessa forma, você pode obter o resultado desejado em uma única visualização do CouchDB sem muitos problemas. Na sua função de mapa de visualização, você só precisará emitir teclas como ["Nome de usuário", 0] e ["nome de usuário", "ProjectName"]. Em JavaScript que seria:

function(doc) {
 if (doc.type == "user") {
  emit([doc._id,0],null);
 } else if(doc.type == "project") {
  emit([doc.username,doc._id],null);
 }
}

Eles podem consultar essa visão e ter um conjunto de documentos organizados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top