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

标签 javascript mysql sql node.js ejs

================路线==============

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/

相关文章:

c# - 获取 https://www.google-analytics.com/ga.js net::ERR_TIMED_OUT

mysql - 在 MySQL 中存储发票

javascript - Touch API(例如 touchstart)在 MS Edge 中不起作用

javascript - 谷歌图表/Spreedcheat : Specify tab in sheet

javascript - jsbin.com 上的 XSS

MySQL:按计划中的下一个日期排序

php - 在不实际使用的情况下更新 mysql 数据

MySQL - 帮助连接两个表

sql - 在 Postgresql 中检测和修复损坏的索引?

java - 基于列标签的 CachedRowSetImpl getString 抛出 "Invalid column name"