2012-09-18 11 views
35

Estoy escribiendo un servidor NodeJS con ExpressJS, PassportJS, MongoDB y MongooseJS. Me las arreglé para hacer que PassportJS use los datos del usuario obtenidos a través de Mongoose para autenticarse.MongoDB via Mongoose JS - ¿Qué es findByID?

Pero para que funcione, tuve que usar una función "findById" como la de abajo.

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

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

"UserModel" es un modelo Mongoose. Declaro el esquema, "UserSchema" antes. Entonces, ¿supongo que "UserModel.findById" es un método del modelo Mongoose?

Pregunta

¿Qué significa "findById" hacer y hay documentación sobre el mismo? Busqué en Google un poco, pero no encontré nada.

Respuesta

72

findById es un método de conveniencia en el modelo proporcionado por Mongoose para encontrar un documento por su _id. La documentación para ello se puede encontrar here.

Ejemplo:

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

Funcionalmente, es lo mismo que llamar:

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

¡¡Oh !! Gracias. Eso me confundió bastante. – Legendre

+1

¿cuál es el tipo de datos de identificación? ¿es una cadena o un ObjectId? – bubakazouba

+2

@bubakazouba 'id' se convertirá en cualquier tipo' _id' se define como en el esquema (por defecto es 'ObjectId'). – JohnnyHK

6

A diferencia de encontrar() que puede volver 1 o más documentos, findById() sólo puede devolver 0 o 1 documento. Documento (s) puede considerarse como registro (s).

+1

, quiere decir que find() puede devolver 0 o muchos documentos; –