2012-09-18 16 views
35

Sto scrivendo un server NodeJS con ExpressJS, PassportJS, MongoDB e MongooseJS. Sono appena riuscito a ottenere PassportJS per l'utilizzo dei dati utente ottenuti tramite Mongoose per l'autenticazione.MongoDB via Mongoose JS - Che cos'è findByID?

Ma per farlo funzionare, ho dovuto utilizzare una funzione "findById" come di seguito.

var UserModel = db.model('User',UserSchema); 

UserModel.findById(id, function (err, user) { < SOME CODE > }); 

"UserModel" è un modello di Mongoose. Dichiaro lo schema, "UserSchema" in precedenza. Quindi suppongo che "UserModel.findById" sia un metodo del modello Mongoose?

Domanda

Che cosa significa "findById" fare e c'è la documentazione su di esso? Ho cercato su Google un po 'ma non ho trovato nulla.

risposta

72

findById è un metodo di convenienza sul modello fornito da Mongoose per trovare un documento dal suo _id. La documentazione per esso può essere trovata here.

Esempio:

// Search by ObjectId 
var id = "56e6dd2eb4494ed008d595bd"; 
UserModel.findById(id, function (err, user) { ... }); 

punto di vista funzionale, è lo stesso di chiamare:

UserModel.findOne({_id: id}, function (err, user) { ... }); 
+0

Oh !! Grazie. Questo mi ha confuso un po '. – Legendre

+1

qual è il tipo di dati di id? è una stringa o un ObjectId? – bubakazouba

+2

@bubakazouba 'id' verrà convertito in qualsiasi tipo' _id' è definito come nello schema (predefinito su 'ObjectId'). – JohnnyHK

6

Al contrario di find(), che può restituire 1 o più documenti, findById() non può che restituisce 0 o 1 documento. I documenti possono essere considerati come record.

+1

significa che find() può restituire 0 o molti documenti;) –

Problemi correlati