MERN课程中User.findOne(...).lean.exec is not a function报错的解决
MERN项目中User.findOne().lean.exec()报错的解决办法
在YouTube的MERN课程编写userController.js时,用这段代码检查重复用户:
const duplicate = await User.findOne({ username }).lean.exec();
在Postman测试时触发报错:
"message": "User.findOne(...).lean.exec is not a function"
问题出在Mongoose方法的调用语法上:lean是需要执行的方法,不是属性,必须加上括号才能返回可链式调用的查询对象,直接写.lean.exec()会被当成访问lean属性下的exec方法,自然找不到对应的函数。
修正后的代码如下,补上lean()的括号即可:
// 检查用户是否存在,是否有重复 const duplicate = await User.findOne({ username }).lean().exec();
内容的提问来源于stack exchange,提问作者Tatyana Molchanova
相关产品推荐
相关产品推荐

