Mongoose调用model的find方法报find is not a function错误如何解决?
问题排查及修复方案
- 首先校验模块导入路径是否正确
你在file B中使用的导入路径为../server/models/section,需要确认file B的实际存放位置和section模型文件的相对路径是否匹配。路径错误会导致导入的Section为undefined或空对象,自然不存在find方法。你可以在导入语句后加一行打印代码验证:
const Section = require("../server/models/section"); console.log(Section) // 正常应该输出mongoose模型构造函数,如果是undefined/空对象就是导入路径错误
- 修正Schema字段拼写错误
你定义shop字段时,将required错写为requred,该错误虽不会直接引发find is not a function报错,但会导致后续保存数据时出现字段校验异常,需要修正:
// 修正前 shop: { type: String, requred: true } // 修正后 shop: { type: String, required: true }
- 排查循环依赖问题
如果你的项目中存在section模型文件和其他文件互相require的情况,会导致模型还未完成初始化就被导出,导入后拿到的是空对象,没有对应的模型方法。 - 确认Mongoose连接状态
调用Section.find()时如果Mongoose还未完成和MongoDB的连接,也可能出现模型方法丢失的问题,建议确保Mongoose连接成功后再调用模型的操作方法,示例:
mongoose.connect('你的MongoDB连接地址') .then(() => { // 连接成功后再执行模型操作 new Toto().save() })
内容的提问来源于stack exchange,提问作者Yaman
相关产品推荐
相关产品推荐

