73

ExpressJS、PassportJS、MongoDB、MongooseJS を使用して NodeJS サーバーを作成しています。Mongoose 経由で取得したユーザー データを使用して PassportJS を認証することができました。

しかし、それを機能させるには、以下のような「findById」関数を使用する必要がありました。

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

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

UserModelマングースモデルです。先にスキーマを宣言しますUserSchemaUserModel.findById()では、マングースモデルの方法だと思いますか?

質問

findByIdそれについてのドキュメントはありますか? 少しグーグルで調べましたが、何も見つかりませんでした。

4

4 に答える 4

147

findById_id でドキュメントを検索するために Mongoose によって提供されるモデルの便利なメソッドです。ドキュメントはこちらにあります。

例:

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

機能的には、次の呼び出しと同じです。

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

Mongoose は、提供されたid値をスキーマで定義されている型にキャストすることに注意し_idてください (デフォルトは ObjectId です)。

于 2012-09-18T19:34:26.103 に答える
7

1 つ以上のドキュメントを返すことができる find() とは対照的に、findById() は 0 または 1 つのドキュメントしか返すことができません。ドキュメントはレコードと考えることができます。

于 2014-01-28T23:25:47.887 に答える