================路线==============
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});
});
});
});
注意:页面加载时,它会通过 console.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.Board 未显示在页面上。除此之外,即使您删除页面上的所有其他内容并仅输入 <%=forum.Board%>,它也不会显示。到目前为止,它仅在循环内的 while 中显示。
==================我尝试过的========================
我尝试添加和删除模板标签和数据之间的空格
我尝试使用 <%- 而不是 <%=
我尝试回滚到以前的版本,它之前对我来说效果很好。
有人知道会发生什么吗?
最佳答案
传递给 ejs 页面的变量 forum 是一个数组。 在 foreach 中,您对内部实体使用相同的名称:
<%forum.forEach(function(forum){%>
在 foreach 之外,变量 forum 是一个数组,没有属性 Board。
你可以尝试写第一个元素:
<% if (forum.length > 0) { %>
<h5 class="card-title">Welcome to <%=forum[0].Board%></h5>
<% } %>
关于javascript - 来自sql数据库的数据不会在EJS页面上呈现,除非它处于循环中(使用node,express,ejs,mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59508058/