Mongoose 渲染 findById
Posted
技术标签:
【中文标题】Mongoose 渲染 findById【英文标题】:Mongoose rendering 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%>" >
</a>
<span><%=game.gameName%></span>
</li>
<%
)%>
但是因为我只用一个游戏来渲染页面,所以我不能这样做。如果没有findById
,我也无法呈现页面。所以我被卡住了,我不知道该怎么做。如果有人有解决方案,我会很高兴听到。
【问题讨论】:
您是否尝试过向页面传递流行游戏的数组? 也许find
更多?
是的,它说“gamesInfo.forEach 不是函数”
您是否正在构建一个包含流行游戏小部件的游戏详情页面?正确吗?
Jonas W. 不幸的是,当我尝试像 gameName.find(gameNameId: req.params.gameNameId) 时它不起作用。
【参考方案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%>" >
</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%>" >
</a>
<span><%=gamesInfo[i].gameName%></span>
</li>
<%
%>
【讨论】:
以上是关于Mongoose 渲染 findById的主要内容,如果未能解决你的问题,请参考以下文章