【问题标题】:Mongoose rendering findByIdMongoose 渲染 findById
【发布时间】:2018-09-16 12:47:28
【问题描述】:

嘿,我正在尝试构建 Flash 游戏网站。在我点击一个游戏后,它会打开一个页面,我正在使用findById 进行渲染,例如:

router.get("/oyun/:gameNameId", (req, res) => {
    gameName.findById(req.params.gameNameId)
        .then((gamesInfo) => {
            console.log(gamesInfo);
            res.render("showGame", {
                gamesInfo: gamesInfo
            });
        })
        .catch((err) => {
            console.log("errr errr errrr");
            console.log(err);
            res.send(err);
        });
});

我的问题是在这个页面上我想动态显示流行的游戏,例如:

<% gamesInfo.forEach((game)=>{ %>
    <% if(game.popular =="true") { %> 
        <li>
            <a href="/oyun/<%= game._id %>" class="sa">
                <img src="<%=game.gameImg%>" alt="">
            </a>
            <span><%=game.gameName%></span>
        </li>
     <% }  
})%>          

但是因为我只用一个游戏来渲染页面,所以我不能这样做。如果没有findById,我也无法呈现页面。所以我被卡住了,我不知道该怎么做。如果有人有解决方案,我会很高兴听到。

【问题讨论】:

  • 您是否尝试过向页面传递流行游戏的数组?
  • 也许find 更多?
  • 是的,它说“gamesInfo.forEach 不是函数”
  • 您是否正在构建一个包含流行游戏小部件的游戏详情页面?正确吗?
  • Jonas W. 不幸的是,当我尝试像 gameName.find({gameNameId: req.params.gameNameId}) 时它不起作用。

标签: javascript node.js mongodb mongoose ejs


【解决方案1】:

我通过渲染双猫鼬查询来找到解决方案:

router.get("/oyun/:gameNameId",(req,res)=>{
        gameName.findById( req.params.gameNameId , function(err, gamesInfo){
            if(err) {
              console.log(err);
              return
            } 
            gameName.find({}, function(err, gamesI){
                if(err) {
                  console.log(err);
                  return
                }
            res.render("showGame",{gamesInfo:gamesInfo , gamesI: gamesI});
    });
});
});

<% gamesI.forEach((game)=>{ %>
    <% if(game.popular =="true") { %> 
        <li>
            <a href="/oyun/<%= game._id %>" class="sa">
                <img src="<%=game.gameImg%>" alt="">
            </a>
            <span><%=game.gameName%></span>
        </li>
     <% }  
})%> 

我不知道我必须调用多个查询。

【讨论】:

  • 这就是我试图在我的评论中传达的内容,这是你最优雅的做法;)
  • 我的问题是。我不知道我可以调用两个查询。 :)
  • 你觉得怎么样?我的意思是,您可以将多个函数的响应返回给客户端,这似乎很明显
  • 在我找到解决方案之前。我在想我只能从数据库返回一个查询^^
【解决方案2】:

试试这个:

<% for(var i=0;i<gamesInfo.length;i++){ %>
        <% if(gamesInfo[i].popular =="true") { %> 
            <li>
                <a href="/oyun/<%= gamesInfo[i]._id %>" class="sa">
                    <img src="<%=gamesInfo[i].gameImg%>" alt="">
                </a>
                <span><%=gamesInfo[i].gameName%></span>
            </li>
         <% }  
    }%>

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2019-07-15
    • 2017-10-13
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    • 2012-09-11
    相关资源
    最近更新 更多