MongoDB数据接口Postman正常,前端调用显示undefined求助
问题分析与解决
核心问题:请求URL不匹配
API侧定义的是路径参数路由(/shops/:shopName,假设路由挂载在/shops路径下),但前端发起的请求用了查询参数格式:/shops?shopName=${shopName},导致后端无法正确读取req.params.shopName,返回数据不符合预期,最终前端拿到的shop对象没有shopName字段,显示undefined。
解决方法:修正前端请求URL
把前端的axios请求改成路径参数形式:
const res = await axios.get(`/shops/${shopName}`);
其他潜在问题优化
- 渲染容错处理
初始shop是空对象,第一次渲染时shop.shopName必然是undefined,建议添加空值判断避免异常:
{capitalizeFirstLetter(shop?.shopName || '')}
或者给状态设置初始null值,配合加载状态:
const [shop, setShop] = useState(null); // 渲染部分 {shop ? capitalizeFirstLetter(`${shop.shopName} `) : '加载中...'}
- API侧空值校验
如果查询不到店铺,shop会是null,此时解构shop._doc会直接报错,建议提前判断:
try { // 原查询逻辑 if (!shop) { return res.status(404).json("Shop not found!"); } const { updatedAt, ...others } = shop._doc; res.status(200).json(others); } catch (err) { res.status(500).json("Server error!"); }
内容的提问来源于stack exchange,提问作者sultan.h
相关产品推荐
相关产品推荐

