2015-07-04 12 views
7

Ho un modello con un numero di proprietà. Uno di questi è un campo chiamato "developerId" che contiene una stringa che ha la stessa lunghezza e le stesse caratteristiche di un ObjectId MongoDB (è in effetti un ObjectId con stringhe).Proprietà stringa loopback MongoDB convertita in ObjectId quando si utilizza la clausola find where

Quando interrogo il modello con il metodo find() in Node.js, la query viene aggiornata prima dell'esecuzione e il valore "developerId" viene convertito in un ObjectId che quindi non riesce a corrispondere a qualsiasi stringa nel database poiché sono stringhe, non ObjectIds.

{where: {developerId: '55118c5fc921fa170f05080b'}} 

viene convertito in:

{where: {developerId: ObjectId('55118c5fc921fa170f05080b')}} 

Il campo non è un campo ID, viene specificato come un tipo: 'stringa' nella definizione del modello JSON.

Come disattivare questo comportamento di auto-object-id in modo da avere il controllo sulle query di Loopback?

risposta

4

Sembra che tu abbia scoperto un bug/difetto del framework. Vedi qui:

https://github.com/strongloop/loopback-connector-mongodb/issues/52

Il bug sembra essere ancora irrisolta, come di due mesi fa. Benvenuti nel selvaggio west che può essere lo sviluppo di nodi.

Si potrebbe biforcarsi e incidere il modulo a breve termine, mentre si lavora con la comunità per risolvere questo problema.

Si potrebbe anche provare a utilizzare la connessione mongo sottostante per creare la query e quindi mapparla nuovamente agli oggetti loopback. È possibile ottenere che in questo modo:

app.models.User.dataSource.connector 

Suppongo che si può sempre cambiare il campo developerId il vostro modello di essere un vero e proprio ObjectId.

0

assicurarsi nelle proprietà del file developerId JSON è definito come oggetto campione:

"Properties" { 
... 
    "developerId": { 
     "type": { 
     "required": true 
     } 
    } 
... 
} 
+1

grazie per la risposta, ma non credo che si capisce il problema. Il campo è già stato definito nel modello. Il problema riguarda la conversione automatica da stringa a ObjectId che in questo caso non è richiesta. –

Problemi correlati