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

Postman中Express Delete用户接口请求无效问题排查

问题分析与修复方案

存在的问题

  1. filter方法未修改原数组
    filter是纯函数,只会返回符合条件的新数组,不会直接修改原数组usersList。你当前仅调用了filter但未将结果关联到原数组,因此原数组内容毫无变化。

  2. 类型不匹配导致过滤逻辑失效
    req.params.userId获取到的是字符串类型(比如请求/users/2时,userId值为"2"),而user.id是数字类型(2)。使用严格不等!==比较时,数字与字符串永远不相等,导致filter会保留所有用户。

  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:24:16