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

Node.js中Handlebars URL方法无法正确迭代对象数组ID问题

问题根源:HTML标签未正确闭合!

兄弟,你这问题太典型了——你的Handlebars模板里的<form>标签写错了闭合方式!

看你贴的index.handlebars代码,每个循环里的form结尾写的是<form>而不是</form>:

<form method="POST" action="/{{this.id}}?_method=DELETE">
  <button type="submit">DELETE</button>
<form> <!-- 这里错了!应该是</form> -->

浏览器在解析HTML时,遇到未正确闭合的标签会自动尝试修复,但这种修复逻辑完全不符合你的预期:它会把第一个<form>标签一直延伸到文档末尾,也就是说页面上所有的删除按钮其实都属于第一个form,所以不管你点哪个按钮,发送的都是第一个form的请求参数,自然只会返回第一个ID的结果。

修复方案

把index.handlebars里的form闭合标签改对就行,修复后的代码:

<ul>
  {{#each products}}
    <li>{{this.name}}</li>
    <form method="POST" action="/{{this.id}}?_method=DELETE">
      <button type="submit">DELETE</button>
    </form> <!-- 这里改成正确的闭合标签 -->
  {{/each}}
</ul>

额外优化建议

你的DELETE路由可以稍微调整下,把参数设为必填(去掉问号),避免无意义的空ID请求:

app.delete('/:id', (req, res, next) => {
  res.send('your id is: ' + req.params.id);
});

这样调整后,每个按钮就会正确绑定对应条目ID的请求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:45:59