Question

J'ai deux bases de données CouchDB - les documents de DB1 sont données utilisateur - nom, adresse e-mail, nom d'utilisateur, mot de passe, mais dans un champ que je stocke une liste des numéros d'identification enregistrés dans DB2 où les projets utilisateur sont enregistrés (contenant un champ nom d'utilisateur et certains Zones de texte.

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

Je suis en train d'écrire une vue en Python (en utilisant le framework web Flask et bibliothèque Python CouchDB) qui va vérifier DB1, saisir tous les projets ids, puis aller à db2 et une traction façon batch l'URL, le temps , pour chaque document filesize avec ids correspondant, et je peux peut placer que les données dans un tableau.

Je ne commence la programmation plus tôt cette année et cela implique des techniques que je ne peux imaginer. aide quelqu'un peut me trouver une solution?

Kind remerciements

Était-ce utile?

La solution

Sauf si vous avez de bonnes raisons pour diviser vos documents dans différents dbs, qui semble être le cas contraire en fonction de votre question, les vous devez les garder tous sur la même base de données et ont une propriété sur les documents pour identifier leur type ( comme un "type: l'utilisateur" et "type: projet")

.

De cette façon, vous pouvez obtenir le résultat souhaité sur une seule vue CouchDB sans trop de difficultés. Dans votre fonction voir la carte que vous aurez juste besoin d'émettre des clés comme [ « nom d'utilisateur », 0] et [ « nom d'utilisateur », « ProjectName »]. En Javascript ce serait:

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

eux, vous pouvez interroger ce point de vue et avoir un ensemble de documents organisés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top