2012-09-18 29 views
35

Tôi đang viết một máy chủ NodeJS với ExpressJS, PassportJS, MongoDB và MongooseJS. Tôi chỉ quản lý để lấy PassportJS để sử dụng dữ liệu người dùng thu được thông qua Mongoose để xác thực.MongoDB qua Mongoose JS - findByID là gì?

Nhưng để làm cho nó hoạt động, tôi đã phải sử dụng một hàm "findById" như dưới đây.

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

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

"UserModel" là mẫu Mongoose. Tôi tuyên bố lược đồ, "UserSchema" trước đó. Vì vậy, tôi cho rằng "UserModel.findById" là một phương thức của mô hình Mongoose?

Câu hỏi

không "findById" làm gì và có tài liệu về nó? Tôi googled xung quanh một chút nhưng không tìm thấy bất cứ điều gì.

Trả lời

72

findById là một phương pháp tiện lợi trên mô hình do Mongoose cung cấp để tìm tài liệu theo _id của nó. Tài liệu cho nó có thể được tìm thấy here.

Ví dụ:

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

Về mặt chức năng, nó giống như cách gọi:

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

Oh !! Cảm ơn. Điều đó làm tôi bối rối một chút. – Legendre

+1

loại dữ liệu của id là gì? nó là một chuỗi hoặc một ObjectId? – bubakazouba

+2

@bubakazouba 'id' sẽ được truyền tới bất kỳ loại' _id' nào được định nghĩa như trong lược đồ (mặc định là 'ObjectId'). – JohnnyHK

6

Trái ngược để tìm() mà có thể trở lại 1 hoặc nhiều tài liệu, findById() có thể chỉ trả về 0 hoặc 1 tài liệu. (Các) tài liệu có thể được coi là bản ghi.

+1

có nghĩa là find() có thể trả về 0 hoặc nhiều tài liệu;) –

Các vấn đề liên quan