2012-09-18 15 views
35

Piszę serwer NodeJS z ExpressJS, PassportJS, MongoDB i MongooseJS. Właśnie udało mi się zmusić PassportJS do wykorzystania danych użytkownika uzyskanych przez Mongoose do uwierzytelnienia.MongoDB przez Mongoose JS - Co to jest findByID?

Ale żeby to działało, musiałem użyć funkcji "findById" jak poniżej.

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

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

"UserModel" to model mangusty. Deklaruję schemat "UserSchema" wcześniej. Więc przypuszczam, że "UserModel.findById" jest metodą modelu Mongoose?

Pytanie

Co oznacza "findById" zrobić i czy istnieje dokumentacja na nim? Trochę goograłem, ale niczego nie znalazłem.

Odpowiedz

72

findById to wygodna metoda na modelu dostarczonym przez Mongoose do znalezienia dokumentu po _id. Dokumentacja dla niego można znaleźć here.

Przykład:

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

Funkcjonalnie, to tak samo jak wywołanie:

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

Och !! Dzięki. To mnie trochę zdezorientowało. – Legendre

+1

jaki jest typ danych identyfikatora? czy jest ciągiem znaków lub ObjectID? – bubakazouba

+2

@bubakazouba 'id' zostanie przeniesiony do dowolnego typu' _id' jest zdefiniowany tak, jak w schemacie (domyślnie do 'ObjectId'). – JohnnyHK

6

W przeciwieństwie do znalezienia(), która może powrócić 1 lub więcej dokumentów, findById() może jedynie zwróć 0 lub 1 dokument. Dokument (y) można uważać za rekord (e).

+1

, co oznacza, że ​​find() może zwracać 0 lub wiele dokumentów;) –