MongoDB通过Mongoose JS - 什么是findByID?

Leg*_*dre 63 mongoose mongodb

我正在用ExpressJS,PassportJS,MongoDB和MongooseJS编写NodeJS服务器.我设法让PassportJS使用通过Mongoose获得的用户数据进行身份验证.

但要使其工作,我必须使用如下所示的"findById"函数.

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

UserModel.findById(id, function (err, user) { < SOME CODE > } );
Run Code Online (Sandbox Code Playgroud)

UserModel是一个猫鼬模型.我之前声明了架构UserSchema.所以我想UserModel.findById()是一种Mongoose模型的方法?

findById做了什么,有什么文件吗?我用Google搜索了一下但没有发现任何东西.

Joh*_*yHK 127

findById是一个方便的方法,由Mongoose提供的模型,以通过其_id查找文档.它的文档可以在这里找到.

例:

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

在功能上,它与调用相同:

UserModel.findOne({_id: id}, function (err, user) { ... });
Run Code Online (Sandbox Code Playgroud)

请注意,Mongoose会将提供的id_id强制转换为模式中定义的类型(默认为ObjectId).

  • @bubakazouba`id`将被转换为类型中定义的`_id`类型(默认为`ObjectId`). (2认同)
  • @AlexanderMills有.它被称为`findByIdAndRemove` (2认同)

小智 8

如果id的模式不是ObjectId类型,则不能使用function: findbyId()


Bon*_*ese 7

与find()相反,find()可返回1个或多个文档,findById()只能返回0或1个文档.文件可以被认为是记录.

  • 你的意思是find()可以返回0或许多文件;) (4认同)