2012-09-18 31 views
35

我正在用ExpressJS,PassportJS,MongoDB和MongooseJS編寫一個NodeJS服務器。我設法讓PassportJS使用通過Mongoose獲得的用戶數據進行身份驗證。MongoDB通過Mongoose JS - 什麼是findByID?

但是爲了使它工作,我不得不使用下面的「findById」函數。

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

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

「UserModel」是一個Mongoose模型。我之前聲明瞭模式「UserSchema」。所以我想「UserModel.findById」是Mongoose模型的一種方法?

問題

什麼是 「findById」 做的,是有文件就可以了?我搜索了一下,但沒有找到任何東西。

回答

72

findById是一種方便的方法,它由Mongoose通過其_id查找文檔提供。它的文檔可以找到here

例子:

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

在功能上,它與調用:

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

哦!謝謝。這讓我很困惑。 – Legendre

+1

什麼是id的數據類型?它是一個字符串還是一個ObjectId? – bubakazouba

+2

@bubakazouba'id'將被轉換爲'_id'類型中定義的任何類型(默認爲'ObjectId')。 – JohnnyHK

6

與之相對find()方法可返回1個或多個文件, findById()只能返回0或1個文檔。文件可以被認爲是記錄。

+1

你的意思是find()可以返回0或多個文件;) –