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

Node.js MongoDB报错ERR_INVALID_ARG_TYPE:新手求助

排查Node.js+MongoDB添加数据时的ERR_INVALID_ARG_TYPE错误

我是Node.js和MongoDB的新手,在使用Postman向MongoDB添加数据时遇到错误,错误信息为:{"code": "ERR_INVALID_ARG_TYPE"}。以下是相关代码文件,请协助排查:

路由代码

router.route('/user/getAll').get(userController.getDataConntrollerfn);

userController.js

var createUserControllerFn = async (req, res) => 
{
    const userModelData = new userModel(req.body)
    try
    {
        await userModelData.save()

        res.status(201).send(userModel);
    }
    catch(error)
    {
        res.status(400).send(error);
    }
}

userModel.js

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var userSchema = new Schema({
    name: {
        type: String,
        required: true
    },
    address: {
        type: String,
        required: true
    },
    phone: {
        type: String,
        required: true
    }
});

module.exports = mongoose.model('employees', userSchema);

MongoDB连接代码

mongoose.connect("mongodb://localhost:27017/est",{useNewUrlParser: true,  useUnifiedTopology: true },function checkDB(error)
{
    if(error)
    {
        console.log("errorr")
    }
    else
    {
        console.log("DB Connectedddd!!!!!!!!!!!")
    }
});

server.use(cors());
server.use(express.json());
server.use(routes);
server.use(bodyParser.json());

server.listen(8040,function check(error)
{
    if(error)
    {
        console.log("errorr")
    }
    else
    {
        console.log("startedddddd")
    }
});

错误原因及修复方案

  1. 控制器响应参数错误
    控制器中res.status(201).send(userModel);这一行,userModel是Mongoose的模型构造函数,并非保存后的实例对象,send方法无法序列化该类型,直接触发ERR_INVALID_ARG_TYPE错误。
    修复:将该行改为res.status(201).send(userModelData);,发送保存后的实例数据。

  2. 缺少POST请求路由
    当前仅配置了GET请求的/user/getAll路由,没有对应添加数据的POST路由,Postman发送的请求找不到处理逻辑。
    修复:添加POST路由,示例如下:

    router.route('/user/create').post(userController.createUserControllerFn);
    
  3. 重复的JSON解析中间件
    连接代码中同时使用server.use(express.json());和server.use(bodyParser.json());,两者功能完全重复,建议删除其中一个,保留express.json()即可(Express 4.16+版本已内置该功能)。

内容的提问来源于stack exchange,提问作者abi jega

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 12:05:32