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

如何在Handlebars中无需each循环引用单个数据库商品数据?

解决Handlebars单个商品数据直接绑定问题

核心问题出在模板上下文的传递方式——你之前用{{#each itens}}循环列表,是因为后端传递的是包含商品数组的上下文;而单个商品页面需要传递单个商品对象作为模板的根上下文,或者明确指定对象路径来访问字段。

1. 确保后端传递单个商品对象

不管你用什么后端框架,查询到单个商品数据后,要把这个对象直接作为模板的渲染上下文,而不是包裹在数组或者外层对象里(除非你特意需要嵌套结构)。

举个Node.js/Express的例子:

// 从数据库获取单个商品数据
const produto = await ProdutoModel.findOne({ Codigo: req.params.codigo });
// 直接将商品对象传给模板
res.render('atualizar-produto', produto);

2. 模板中直接引用字段

此时模板的根上下文就是单个商品对象,你可以直接用{{Codigo}}、{{Nome}}等字段名绑定到表单value上:

<form method="POST" action="/produtos/atualizar">
  <div>
    <label>商品编码:</label>
    <input type="text" name="Codigo" value="{{Codigo}}" readonly>
  </div>
  <div>
    <label>商品名称:</label>
    <input type="text" name="Nome" value="{{Nome}}">
  </div>
  <div>
    <label>库存数量:</label>
    <input type="number" name="Estoque" value="{{Estoque}}">
  </div>
  <button type="submit">保存更新</button>
</form>

3. 如果上下文是嵌套结构的处理方式

如果后端必须把商品对象包裹在某个键下(比如{ produto: {...} }),那模板里需要通过键名逐层访问字段:

<input type="text" name="Nome" value="{{produto.Nome}}">

检查下你之前的代码,大概率是因为后端传递的还是数组或者嵌套对象,导致模板找不到{{Codigo}}对应的字段值,调整上下文传递方式就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:15:03