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

Handlebars多#each循环中使用this取值及Express渲染问题

如何在Handlebars中正确显示MongoDB查询到的汽车拍卖信息

兄弟,你现在的问题根源在于把原本关联的汽车品牌、型号等字段拆成了独立数组,再用嵌套#each循环,这既破坏了数据的对应关系,也导致this无法正确获取你要的字段。咱们来一步步修正:

1. 简化Express端的数据处理

你完全没必要单独提取marqueauction、modelauction这些数组——因为你的democarauctions.results本身就是包含所有字段的对象数组,直接把它传给模板就好,省去多余的循环拆分:

const [democarauctions] = result;
// 删掉那些单独提取marque、model的循环代码
res.render('demo', { 
  results: democarauctions.results 
});

2. 修改Handlebars模板,用单循环替代嵌套循环

既然results里的每个元素都包含marque、model、model_year等完整字段,只需要一个#each循环遍历整个数组,就能直接访问每个元素的对应属性:

{{#each results}}
  <div class="results__container--box">
    {{this.marque}}
    {{this.model}}
    {{this.model_year}}
    {{this.price_str}}
    <!-- 其他你需要显示的字段都可以这样直接访问 -->
  </div>
{{else}}
  <div class="results__container--box">
    <p>Aucun résultat d'enchères n'est disponible pour ce modèle.</p>
  </div>
{{/each}}

为什么原来的方法行不通?

  • 你拆分出来的marqueauction和modelauction是两个独立的字符串数组,嵌套#each会让每个品牌和所有型号强行配对,完全不是你想要的“一条结果对应一个品牌+型号”的关系。
  • 数组里的每个元素只是单纯的字符串(比如品牌名),根本没有marqueauction或modelauction属性,所以{{this.marqueauction}}自然拿不到任何值。

如果之后你需要对某个字段做特殊处理(比如去重、格式化),直接在遍历democarauctions.results时给每个对象添加处理后的字段即可,不要拆成独立数组哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:04:56