2012-07-13 17 views
7

Sto accedendo al database Mongo da Clojure utilizzando la libreria Monger. Una cosa che mi infastidisce è il passaggio tra le istanze e le stringhe ObjectId.Mapping Mongodb ObjectId ae da stringa automaticamente

Ad esempio, il questo codice (mc/find-maps "posts" {}) valuterà alle mappe con il valore di _id ingresso impostato su istanze di ObjectId di classe, mentre nella mia app trovo più utile semplicemente avere come una stringa per la quale so che è è unico.

D'altra parte per espressioni come: (mc/find-map-by-id "posts" (new ObjectId id)) dove uso un oggetto String per il parametro id, devo usarlo per costruire un'istanza di ObjectId.

C'è un modo per convertire i valori di _id tra le stringhe nell'applicazione e ObjectId sul lato mongo in modo automatico e trasparente? Qualche tipo di opzione che, quando abilitata, crea mappe con rappresentazioni di stringa di id e viceversa converte le rappresentazioni di stringa di id di oggetti id quando usate come parametri nelle query?

In caso contrario, quali altre strategie sono disponibili?

risposta

2

Ti condivido su questo punto. Recuperare gli ObjectID è fastidioso, perché devi sempre convertire avanti e indietro e se ti dimentichi, è difficile catturare bug.

La soluzione migliore potrebbe essere quella di avvolgere il codice del driver per eseguire automaticamente le conversioni. Sostituisci quindi find, findOne, insert, con un involucro sottile che osserva il tipo e effettua automaticamente le conversioni indipendentemente dall'ingresso o dall'uscita.

Purtroppo, non penso che ci sia un modo più semplice.

Problemi correlati