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

EJS中根据指定_id快速查询数组gudangs对应nama字段的方法

方案1:视图内直接使用Array.find()单条查询

如果仅需要查询1次对应ID的仓库名称,直接用数组的find方法即可,无需手动遍历判断:

<%= gudangs.find(gudang => gudang._id.toString() === '你的目标ID')?.nama || '未匹配到对应仓库' %>

注意:MongoDB返回的_id是ObjectId对象类型,必须调用.toString()转为字符串后再和字符串ID做全等判断,否则会出现匹配失败的问题。其中可选链?.用来避免匹配不到数据时报错,后面的||可以设置匹配失败时的兜底展示内容。

方案2:控制器预处理为ID映射对象(适合多次查询场景)

如果你在视图中需要多次根据ID查询仓库名称,推荐在控制器传递数据前先把数组转为以ID为键、名称为值的映射对象,查询效率更高:

  1. 修改app.js中的传递逻辑:
// 预处理生成ID到仓库名称的映射
const gudangMap = Object.fromEntries(
  gudangs.map(g => [g._id.toString(), g.nama || '未设置名称'])
)
res.render('daftar-staff', {
  title: 'Daftar Staff',
  session: req.session,
  layout: 'layouts/main-layouts',
  gudangs,
  gudangMap // 新增传递映射对象
})
  1. EJS视图内直接取值即可:
<%= gudangMap['你的目标ID'] || '未匹配到对应仓库' %>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:24:01