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

Next.js对接MongoDB接口时req.query参数未正常传递问题

问题根因

参数无法被接口获取的核心原因是前端发起GET请求时,没有把userName参数拼接在URL查询串中,接口侧的req.query自然读不到对应值。另外现有代码还有三处可优化的问题:

  • 给GET请求设置Content-Type: application/json请求头是无效操作,GET请求没有请求体,该头不会产生实际作用
  • 单值匹配查询没必要使用$in操作符,直接匹配字段即可,查询性能更高
  • 接口侧缺少参数空值校验,未传参时会触发无效的数据库查询
修复代码

前端请求逻辑修改

将需要传递的userName参数编码后拼接到请求URL末尾,移除无效的请求头:

export async function getStaticProps() {
  // 替换为你实际需要查询的用户名变量
  const queryUserName = "实际要查询的用户名";
  const res = await fetch(`http://localhost:3000/api/usersAPI?userName=${encodeURIComponent(queryUserName)}`, {
    method: "GET"
  });
  let users = await res.json();

  return {
    props: { users },
  };
}

接口侧逻辑修改

增加参数空值校验,简化数据库查询语句:

case "GET": {
  const { userName } = req.query;
  // 参数缺失时直接返回客户端错误,避免无效查库
  if (!userName) {
    return res.status(400).json({ msg: "缺少必填查询参数userName" });
  }
  const users = await db
    .collection("USERS")
    .find({ user: userName })
    .toArray();
  res.json(users);
  break;
}

排查提示:如果修改后依然拿不到参数,检查项目内是否有中间件、反向代理规则过滤了URL上的查询参数,Next.js默认API路由会自动解析?key=val格式的查询参数到req.query对象,无需额外手动解析。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:09:20