Mongoose创建Product模型报错:Cannot read properties of undefined (reading 'Product')
解决MongoDB Product模型报错:TypeError: Cannot read properties of undefined (reading 'Product')
问题分析
报错指向mongoose.models.Product,说明mongoose.models为undefined,通常是mongoose未完成连接、模型初始化时机不对,或是API使用方式有误导致。
解决方案
1. 改用导入的models对象
你已经从mongoose导入了models,直接使用该对象代替mongoose.models即可,这是更可靠的方式:
import mongoose, { Schema, models } from "mongoose"; const productSchema = new Schema( { title: String, description: String, stock: Number, }, { timestamps: true, } ); // 替换为导入的models对象 const Product = models.Product || mongoose.model('Product', productSchema); export default Product;
2. 确保mongoose先完成连接
在你的项目入口文件(如server.js/app.js)中,必须先执行mongoose连接逻辑,再导入或使用任何模型:
import mongoose from 'mongoose'; import express from 'express'; const app = express(); // 先连接数据库 await mongoose.connect(process.env.MONGODB_URI); console.log('MongoDB连接成功'); // 再导入路由/模型 import productRoutes from './routes/productRoutes.js'; app.use('/api/products', productRoutes);
3. 检查并更新mongoose版本
部分旧版本mongoose存在mongoose.models初始化延迟的问题,执行以下命令更新到最新稳定版:
npm install mongoose@latest
4. 排查循环依赖
检查是否存在模型与路由/其他模块互相导入的情况,循环依赖会导致模型未被正确初始化。比如避免在Product模型中导入使用它的路由,反之亦然。
错误截图

内容的提问来源于stack exchange,提问作者NAZLICAN SAHIN
相关产品推荐
相关产品推荐

