73

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

但要让它工作,我必须使用如下所示的“findById”函数。

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

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

UserModel是猫鼬模型。我之前声明了模式UserSchema。所以我想UserModel.findById()是猫鼬模型的一种方法吗?

问题

有什么作用findById,是否有相关文档?我用谷歌搜索了一下,但没有找到任何东西。

4

4 回答 4

147

findById是 Mongoose 提供的模型上的一种便捷方法,用于通过其 _id 查找文档。它的文档可以在这里找到。

例子:

// 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 回答
9

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

于 2018-05-23T06:56:06.370 回答
7

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

于 2014-01-28T23:25:47.887 回答
4

我是 Mongoose 的维护者。findById()是猫鼬模型的内置方法。findById(id)等效于findOne({ _id: id }),但有一点需要注意:findById()参数为 0 时等效于findOne({ _id: null }).

您可以阅读有关findById()Mongoose 文档findById()教程的更多信息。

于 2019-09-11T15:53:38.700 回答