2016-07-27 17 views
0

Die mongodb 0.1.4 bindings for Rust bieten eine GridFS-Implementierung. Wie aus dem Code und den Beispielen gibt es eine put, aber es gibt keine Objekt-ID zurück.Wie bekomme ich ID aus einer Datei, die mit dem Rust MongoDB-Treiber zu GridFS hinzugefügt wurde?

Meine Abhilfe ist, die Datei in GridFS zu setzen und es dann wieder öffnen Sie die ID abzurufen:

fn file_to_mongo(gridfs: &Store, fpath: &PathBuf) -> bson::oid::ObjectId { 
    gridfs.put(fpath.to_str().unwrap().to_owned()); 
    let mut file = gridfs.open(fpath.to_str().unwrap().to_owned()).unwrap(); 
    let id = file.doc.id.clone(); 
    file.close().unwrap(); 
    id 
} 

Gibt es einen besseren Weg?

Antwort

1

Ich habe MongoDB nicht laufen und ich weiß nicht wirklich etwas darüber, aber das hat zumindest die richtige Signatur und kompiliert.

Erinnern Sie sich, dass die meisten Rust-Bibliotheken Open-Source sind und Sie können die Quelle sogar direkt aus der Dokumentation durchsuchen. Diese Funktion ist im Grunde nur eine gehackte Version des bestehenden put.

+0

vielen Dank für Ihre Hilfe. – kuttifunk

+0

unterbrochen ... Vielen Dank, dass du dir die Zeit genommen hast und mir geholfen hast, mit allem klarzukommen. Likes: editing stack overflow fragen: ich bin ein total noob hier, recht monadische fehlerbehandlung mit versuch !: ich lerne immer noch und vor allem mein gestelltes problem: ich dachte, wenn ich file.close() benutze dann bin ich danach nicht darf auf file.doc.id zugreifen, was nicht wahr ist. Lies die Quelle immer und immer wieder. Danke nochmal, gute Arbeit !! Ich schätze das sehr! – kuttifunk