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

Postman向Node.js(Express)+MySQL发POST请求无响应问题排查

问题排查与修复方案

核心问题列表

  • 1. 模型层SQL语句参数不匹配

    models/users.js中save方法的INSERT语句字段数和传入值数量不一致:
    原代码:
    static save(user) {
      return db.execute('INSERT INTO users (email, password) VALUES (?, ?, ?)', [
        user.email,
        user.password,
        user.admin,
      ]);
    }
    
    字段列表只声明了email、password两个字段,但后续传入了3个值,多出来的admin参数会触发SQL语法错误。
    修复:补全字段列表
    static save(user) {
      return db.execute('INSERT INTO users (email, password, admin) VALUES (?, ?, ?)', [
        user.email,
        user.password,
        user.admin,
      ]);
    }
    
  • 2. 校验失败后无响应逻辑

    controllers/auth.js中参数校验失败后直接return,既没有返回响应给客户端,也没有触发错误处理中间件,导致请求直接挂起,无任何返回:
    原代码:
    if (!errors.isEmpty()) return;
    
    修复:校验失败时返回错误响应
    if (!errors.isEmpty()) {
      return res.status(400).json({ errors: errors.array() });
    }
    
  • 3. 异常捕获后未传递给错误中间件

    controllers/auth.js的catch块中,给错误设置状态码后直接return,没有调用next(err)将错误传递给全局500错误处理中间件,导致服务端报错后也无响应输出:
    原代码:
    catch (err) {
      if (!err.statusCode) {
        return err.statusCode = 500;
      }
      next(err);
    }
    
    修复:移除错误赋值前的return,确保next执行
    catch (err) {
      if (!err.statusCode) {
        err.statusCode = 500;
      }
      next(err);
    }
    

其他可选优化

  • 确认MySQL的users表中存在admin字段,字段类型与传入值匹配
  • Postman请求头确认已设置Content-Type: application/json,避免express无法解析请求体
  • index.js中app.listen可修改为监听ports变量,适配环境变量配置的端口:
    app.listen(ports, () => {
      console.log(`server started at port ${ports}`);
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:57:04