来自sql数据库的数据不会在EJS页面上呈现,除非它在循环中(使用node,express,ejs,mysql)



===

==============ROUTE==============
app.get("/forums/:id", function(req, res){
connection.query('SELECT * FROM Forums where ForumID = ?', [req.params.id], function (err, forumResults) {
if (err) throw err;
console.log(forumResults);
connection.query('SELECT * FROM  Users_Comments_Topics_Forums where ForumID = ?',[req.params.id], function (err, topicResults) {
if (err) throw err;
console.log(topicResults);
res.render("Forums/show", {topic: topicResults, forum: forumResults});
});
});
});

注意:当页面加载时,它会通过控制台向我显示结果.log因此我知道传递的数据。我不认为这个问题出在路线上,但我可能是错的。 ====

=================EJS 页面===================这部分工作得很好。数据库中的数据呈现在此处的页面上。

<%forum.forEach(function(forum){%>
<div class="container card">
<div class="container">
<div class="container forum_square">
<div class="row">
<div class="col-lg-6 block">
<a href ="/forums/<%= forum.ForumID %>"> <h5><%=forum.Board %></h5></a>  
</div>
</div>
<div class="row">
<div class="col-lg-12">
<p><%= forum.Description %></p>
</div>
</div>
</div>
</div>
</div>
<% }); %>
</div>

然而,就在下面...

<div class="col-lg-6 card description">

<div class="card-body">
<h5 class="card-title">Welcome to <%=forum.Board%></h5>
<p class="card-text"><%=forum.Board %></p>
<a class="btn btn-primary" href="forums/new" role="button">Make new Forum</a>

</div>
</div>

论坛。讨论区不会显示在页面上。除此之外,即使您删除页面上的其他所有内容,只需键入 <%=forum。板%>,则不会显示。到目前为止,它只在循环中显示。

==================我尝试过的东西===

=========================我尝试在模板标签和数据之间添加和删除空格

我尝试使用 <%- 而不是 <%=

我试图回滚到以前的版本,它以前对我来说效果很好。

有谁知道会发生什么?

您传递给 ejs 页面的变量论坛是一个数组。 在 foreach 中,您可以对内部的实体使用相同的名称:

<%forum.forEach(function(forum){%>

在 foreach 之外,变量论坛(一个数组(没有属性板。

您可以尝试编写第一个元素:

<% if (forum.length > 0) { %>
<h5 class="card-title">Welcome to <%=forum[0].Board%></h5>
<% } %>

最新更新