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

向Node.js Express+Mongoose后端发起POST请求失败问题排查

解决前端Fetch请求创建用户时Mongoose验证失败的问题

问题核心:前端发起POST请求时未设置Content-Type: application/json请求头,导致后端无法正确解析JSON格式的请求体,触发Mongoose必填字段验证错误。Postman能成功是因为它会自动添加该请求头。

修复方案

在fetch请求的配置中添加headers属性,指定请求内容类型为JSON:

let handleSubmit = async (e) => {
    e.preventDefault();
    try {
    let res = await fetch("http://localhost:3000/v1/auth/register", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
        email: "test@aol.com",
        password: "test1234",
        name: "test",
        //libraryCardId: "1234asdf",
        // mobileNumber: mobileNumber,
        }),
    });
    let resJson = await res.json();
    if (res.status === 200) {
        setName("");
        setEmail("");
        setMessage("User created successfully");
    } else {
        setMessage("Some error occured");
    }
    } catch (err) {
    console.log(err);
    }
};

原理说明

当后端使用express.json()中间件解析请求体时,只有请求头包含Content-Type: application/json时,中间件才会将请求体解析为JSON对象。前端fetch默认的Content-Type是text/plain;charset=UTF-8,所以后端无法识别请求体格式,导致解析后的参数为空,Mongoose自然会提示缺少必填字段。

内容的提问来源于stack exchange,提问作者Matt Bernardini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 13:53:20