如何通过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
相关产品推荐
相关产品推荐

