Estrarre dati da un documento CouchDB tramite gli ID in un altro (Python)
Domanda
Ho due basi di dati in CouchDB - documenti di DB1 sono dati utente - nome, indirizzo e-mail, nome utente, password, ma entro un campo che posso conservare un elenco di ID salvato in DB2 in cui vengono salvati progetti utente (che contiene un campo nome utente e alcuni Campi di testo.
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"
}
Sto cercando di scrivere una vista in Python (utilizzando il framework web Flask e libreria Python CouchDB) che verifica DB1, afferrare tutti gli ID di progetto, e poi andare a DB2 e in un pull modo lotto l'URL, il tempo , la dimensione del file per ogni documento con iD corrispondenti in modo da posso può disporre che i dati in una tabella.
I iniziata solo la programmazione all'inizio di quest'anno e questo comporta tecniche che posso solo immaginare. Qualcuno può aiutarmi a trovare una soluzione?
saluti grazie
Soluzione
Se non avete grandi motivi per dividere tuoi documenti in diversi DBS, che sembra non è il caso in base alla tua domanda, li si dovrebbe tenerli tutti sulla stessa base di dati e hanno alcune proprietà sui documenti per identificare il loro tipo ( come un "tipo: utente" e "tipo: progetto")
.In questo modo è possibile ottenere il risultato desiderato in una singola vista CouchDB senza troppi problemi. Nella funzione guarda la mappa sarà sufficiente per emettere tasti come [ "username", 0] e [ "username", "projectname"]. In Javascript che potrebbe essere:
function(doc) {
if (doc.type == "user") {
emit([doc._id,0],null);
} else if(doc.type == "project") {
emit([doc.username,doc._id],null);
}
}
è possibile interrogare questo punto di vista e hanno un insieme organizzato di documenti.