Postman中Express Delete用户接口请求无效问题排查
问题分析与修复方案
存在的问题
filter方法未修改原数组filter是纯函数,只会返回符合条件的新数组,不会直接修改原数组usersList。你当前仅调用了filter但未将结果关联到原数组,因此原数组内容毫无变化。类型不匹配导致过滤逻辑失效
req.params.userId获取到的是字符串类型(比如请求/users/2时,userId值为"2"),而user.id是数字类型(2)。使用严格不等!==比较时,数字与字符串永远不相等,导致filter会保留所有用户。filter回调缺少返回值
你在filter的箭头函数中使用了花括号,但未显式返回判断结果,回调默认返回undefined,这会导致filter无法正确筛选元素。
修复后的代码
const express = require("express") const app = express() app.use(express.json()) const usersList = [{id :1,name:"naser",age:26},{id :2,name:"mosa",age:46}]; app.post('/users',(req,res)=>{ const newUser = req.body; usersList.push(newUser); res.status(200).json(usersList) }) app.delete(`/users/:userId`,(req,res)=>{ // 将URL参数转为数字类型,匹配用户id的类型 const targetId = Number(req.params.userId); // 找到目标用户在数组中的索引 const userIndex = usersList.findIndex(user => user.id === targetId); // 若找到用户,从原数组中删除该元素 if(userIndex !== -1){ usersList.splice(userIndex, 1); } res.status(200).json(usersList) }) app.listen('3500',()=> console.log("our server is running") )
额外说明
- 用
findIndex配合splice直接修改原数组(usersList是const声明的数组,无法直接重新赋值,但可修改数组内部元素)。 - 加入
if(userIndex !== -1)判断,避免目标ID不存在时执行无效操作。
内容的提问来源于stack exchange,提问作者The Tech Guy
相关产品推荐
相关产品推荐

