Pregunta

Tengo dos bases de datos en CouchDB - documentos de DB1 son los datos del usuario - nombre, dirección de correo electrónico, nombre de usuario, contraseña, pero dentro de un campo que almaceno una lista de los ID en gol en DB2 donde se guardan los proyectos de usuario (que contiene un campo de nombre de usuario y algunos 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"
}

Estoy intentando escribir una vista en Python (utilizando el framework de desarrollo web Frasco y biblioteca de Python couchdb) que comprobará DB1, agarrar todos los identificadores de proyecto, y luego ir a DB2 y de un tirón modo por lotes a cabo la url, el tiempo , tamaño de archivo para cada documento con los identificadores coinciden por lo que puede que puede colocar los datos en una tabla.

Sólo comenzó a programar a principios de este año y esto implica técnicas que sólo puedo imaginar. ¿Puede alguien ayudarme a encontrar una solución?

cordiales gracias

¿Fue útil?

Solución

A menos que tenga buenas razones para dividir sus documentos en diferentes DBS, que parece que no es el caso de acuerdo a su pregunta, que debe mantener a todos en la misma base de datos y tienen alguna propiedad en los documentos para identificar su tipo ( como un "tipo: user" y "tipo: proyecto")

.

De esta manera se puede obtener el resultado deseado en una sola vista couchdb sin demasiados problemas. En su función de vista de mapa que sólo tendrá que emitir teclas como [ "nombre de usuario", 0] y [ "nombre de usuario", "projectname"]. En Javascript que sería:

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

ellos se puede consultar ese punto de vista y tienen un conjunto organizado de documentos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top