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

如何通过PUT请求修改Express项目中的数组元素

问题排查与修复方案

核心错误点

  • 误用in操作符校验数组元素:in操作符用于数组时,只会校验给定值是否为数组的索引键(数字字符串形式的0/1/2/3),你传入的是分类名称字符串,不可能匹配成功,所以请求直接返回404,根本走不到修改逻辑。
  • 数组元素赋值逻辑错误:即使找到匹配的分类,你写的besatning[req.params.kategori] = req.params.antal是给数组本身新增了一个字符串键的属性,完全没有修改数组内对应对象的antal属性。
  • 参数类型未转换:路由拿到的req.params.antal是字符串类型,建议转成数字后再存储,和原有数据类型保持一致。

修复后完整代码

const express = require("express");
const app = express()
const PORT = 8081;
app.listen(PORT, () => console.log("server lytter på port 8081"))

var besatning = [
  {id:0, kategori: 'Køer', antal: 50 },
  {id:1, kategori: 'Hunde', antal: 1 },
  {id:2, kategori: 'Grise', antal: 100 },
  {id: 3, kategori: 'Får', antal: 20 },
];

app.put('/ny_besætning/:kategori/:antal', (req, res)=> {
  // 遍历数组匹配对应分类的对象
  const targetItem = besatning.find(item => item.kategori === req.params.kategori)
  if (targetItem) {
    // 转数字后修改对应属性
    targetItem.antal = Number(req.params.antal)
    res.json(besatning);
  } else{
    res.sendStatus(404)
  }
});

Postman调用说明

  • 请求方式选择PUT
  • 请求地址示例:http://localhost:8081/ny_besætning/Køer/60,该请求会把Køer分类的数量修改为60,调用成功后会返回修改后的完整数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:27:01