MERN售车网站后端报错:TypeError: Car.create is not a function
解决MERN栈中Car.create()不是函数的错误
错误原因
你的Car.js中导入Car模型的方式有误。Models.js导出的是包含Car和User的对象,而你直接将整个导出对象赋值给了Car变量,导致该变量是普通对象而非mongoose模型,自然不具备create()方法。
解决方案
修改Car.js中的导入语句,通过解构赋值直接获取Car模型:
修正后的Car.js代码
const express= require('express'); const mongoose= require('mongoose'); // 解构导出对象,拿到Car模型 const { Car } = require('../Models/Models.js'); const router = express.Router(); router.get ('/create', async function (req, res) { try { const newCar = await Car.create({ name: "Porche", model: "911", color: "Blue", year: 1981, mileage: 500, price: 200000, }); // 返回创建成功的车辆数据 res.status(201).json(newCar); } catch (err) { // 捕获并返回错误信息 res.status(500).json({ error: err.message }); } }) module.exports = router;
额外优化建议
- 确保项目已正确连接MongoDB,mongoose模型依赖数据库连接才能正常工作。可在
index.js中添加连接代码:
const express = require('express'); const mongoose = require('mongoose'); const app = express(); const port = 3000 const car = require("./routes/Car"); // 连接MongoDB mongoose.connect('mongodb://localhost:27017/your-database-name') .then(() => console.log('MongoDB连接成功')) .catch(err => console.error('MongoDB连接失败:', err)); app.use("/cars", car); app.listen(port, ()=>{ console.log(`Server is running on port ${port}`); });
- 给异步路由添加
try/catch块,避免未捕获的错误导致服务器崩溃,同时向客户端返回明确的错误反馈。
内容的提问来源于stack exchange,提问作者Syed Rahil
相关产品推荐
相关产品推荐

