You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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;

额外优化建议

  1. 确保项目已正确连接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}`);
});
  1. 给异步路由添加try/catch块,避免未捕获的错误导致服务器崩溃,同时向客户端返回明确的错误反馈。

内容的提问来源于stack exchange,提问作者Syed Rahil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:12:09