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

使用Mongoose findById渲染Flash游戏详情页时动态展示热门游戏问题

在Flash游戏详情页展示热门游戏的实现方案

嘿,我来帮你搞定这个需求!要在详情页同时展示当前游戏和热门游戏,我们只需要调整路由逻辑,同时获取两类数据,再在模板里渲染就行,具体步骤如下:

1. 修改路由,同时获取当前游戏与热门游戏

目前你的路由只查询了当前点击的游戏,我们需要新增一个查询来获取热门游戏数据。用Promise.all并行执行两个查询,效率更高,不会互相阻塞:

router.get("/oyun/:gameNameId", (req, res) => {
  // 并行执行两个数据库查询
  Promise.all([
    // 查询当前点击的游戏详情
    gameName.findById(req.params.gameNameId),
    // 查询热门游戏:这里假设按浏览量降序取前5个,你可以根据实际规则调整
    gameName.find().sort({ views: -1 }).limit(5)
  ])
  .then(([currentGame, popularGames]) => {
    // 处理当前游戏不存在的情况
    if (!currentGame) {
      return res.status(404).send("抱歉,该游戏不存在!");
    }
    // 将两类数据都传给模板
    res.render("showGame", { 
      gamesInfo: currentGame,
      popularGames: popularGames
    });
  })
  .catch((err) => {
    console.error("加载游戏数据出错:", err);
    res.status(500).send("服务器加载数据失败,请稍后重试");
  });
});

热门游戏查询的自定义调整:

  • 如果你的热门游戏是通过isPopular字段标记的,把查询改成:gameName.find({ isPopular: true }).limit(5)
  • 要是想按用户评分排序,就改成:gameName.find().sort({ rating: -1 }).limit(5)
  • 完全可以根据你的业务规则自定义查询条件,只要符合Mongoose的语法就行

2. 在EJS模板中渲染热门游戏

现在模板里已经拿到了popularGames数组,用EJS的循环语法遍历渲染即可,比如在详情页的合适位置添加这段代码:

<!-- 热门游戏区域 -->
<section class="popular-games-section">
  <h2>🔥 热门游戏</h2>
  <div class="games-grid">
    <% if (popularGames.length > 0) { %>
      <% popularGames.forEach(game => { %>
        <a href="/oyun/<%= game._id %>" class="game-card">
          <img src="<%= game.thumbnail %>" alt="<%= game.name %>" class="game-thumbnail">
          <p class="game-title"><%= game.name %></p>
        </a>
      <% }) %>
    <% } else { %>
      <p class="no-games">暂无热门游戏推荐</p>
    <% } %>
  </div>
</section>

额外提示:

  • 确保模板里用到的字段(比如game.thumbnail、game.name)和你的Mongoose模型字段一致,别写错名字
  • 可以根据网站的UI设计调整HTML结构和CSS样式,让热门游戏展示更美观
  • 如果热门游戏更新不频繁,还可以给热门游戏查询加个缓存(比如用Redis),减少数据库压力,提升页面加载速度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:27:12