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

Express.js报错Cannot destructure property 'name',如何按URL参数ID返回对应对象

问题原因

你错误将请求路径中的_id字符串直接作为数组下标访问users数组:
users是普通下标数组,合法索引为0~5的数字,而你存储在用户对象中的_id是自定义随机字符串,二者并不匹配,因此users[req.params._id]返回undefined,触发解构报错。

修复方案

修改/users/:_id路由逻辑,使用Array.find()方法匹配_id属性一致的用户对象,同时增加不存在的容错处理:

app.get('/users/:_id', (req, res) => {
  // 匹配_id一致的用户
  const targetUser = users.find(item => item._id === req.params._id);
  if (!targetUser) {
    // 匹配失败返回404状态码
    return res.status(404).send({ message: '未找到对应用户' });
  }
  // 可按需返回name字段或整个用户对象
  res.send(targetUser.name);
  // 如需返回完整用户对象改为:res.send(targetUser)
});

其他注意事项

  • 你当前代码中未定义cards变量,访问/cards路由时会抛出未定义错误,需提前声明对应的cards数组。
  • 代码中users数组声明在路由之后,但由于Express路由回调仅在收到请求时执行,此时users已经完成初始化,无需调整代码顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:30:02