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

如何用Express.js结合Mongoose在HBS视图中正确展示MongoDB数据?

问题分析与解决步骤

核心语法错误:HBS与EJS语法混淆

你误用了EJS的<%= name %>语法,但HBS(Handlebars)的插值语法是双大括号{{}},这是导致报错的直接原因。

修正代码:

  1. 修改HTML/HBS模板标签:
    把原来的
<p name="name"></p>

改成

<p>{{name}}</p>

这里的name对应你在res.render里传入的{name: email}的键名,渲染时会自动替换为对应的值。

  1. 完善路由错误处理(避免async函数未捕获异常):
    你的路由代码缺少错误处理逻辑,若findOne查询失败会导致服务器崩溃,建议补充try/catch:
sellerreg.get("/seller", async (req, res) => {
  try {
    const email = "abdulsami292@gmail.com";
    const user = await sellers.findOne({ email: email });
    // 额外判断用户是否存在,避免渲染undefined
    if (!user) {
      return res.send("用户不存在");
    }
    res.render("admin.hbs", { name: user.email }); // 直接取数据库字段更稳妥
  } catch (err) {
    console.error(err);
    res.status(500).send("服务器错误");
  }
});
  1. 确认HBS视图引擎配置(新手易漏配):
    确保Express项目已正确配置HBS作为视图引擎,示例配置如下:
const express = require('express');
const app = express();
const hbs = require('hbs');

// 设置视图引擎为hbs
app.set('view engine', 'hbs');
// 指定视图文件存放目录(默认是views文件夹,自定义路径需手动指定)
app.set('views', './views');

额外注意事项

  • 确保sellers模型已正确导入到路由文件中,否则会出现sellers is not defined报错。
  • 检查admin.hbs文件是否存放在你配置的视图目录下,路径错误会导致渲染失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 05:12:07