【问题标题】:Displaying MySQL query results as HTML with EJS使用 EJS 将 MySQL 查询结果显示为 HTML
【发布时间】:2018-12-10 01:58:40
【问题描述】:

我正在构建一个与我在本地构建的 MySQL 数据库交互的应用程序(使用 EJS 视图引擎和 Node.js)。我可以以 JSON 字符串的形式成功接收来自查询的结果,但我无法将信息发送到视图(显示为 HTML),因为我收到错误:未定义不安全食品。

我的“app.js”文件声明:

var unsafefoods = require('./routes/unsafefoods');
app.use('/unsafefoods', unsafefoods);

我的路线“unsafefoods.js”声明:

var express = require('express');
var router = express.Router();

/* GET all safe foods */
router.get('/', function (req, res, next) {
	connection.query('SELECT * from appycavy.foods WHERE safe = 0', function (error, rows, fields) {
		if (error) {
			res.send(JSON.stringify({
				"status": 500,
				"error": error,
				"response": null
			}));
			//If there is error, we send the error in the error section with 500 status
		} else {
			res.render(unsafefoods, {
				title: 'Unsafe foods list',
				data: rows
			})
		}
	});
});

module.exports = router;

我的观点 'unsafefoods.ejs' 声明:

<!DOCTYPE html>
<html lang="en">

<head>
  <% include ./partials/head %>
</head>

<body class="container">
  <header>
    <% include ./partials/header %>
  </header>
  <main>
    <div class="jumbotron">
      <h2>Safe foods</h2>
      <p>The following is a list of all
        <b>unsafe</b> foods
      </p>
      <!-- table to display unsafe foods -->
      <table width='80%' border=0>
 
        <tr style='text-align:left; background-color:#CCC'>
            <th>ID</th>
            <th>Name</th>
            <th>Safe</th>
            <th>Type</th>
            <th>Favourite</th>
            <th>Water</th>
            <th>Energy</th>
            <th>Vitamin C</th>
            <th>Sugar</th>
            <th>Lipid fat</th>
            <th>Calcium</th>
            <th>Phosphorus</th>
            <th>CaP ratio</th>
        </tr>
        
        <!--
            Using FOREACH LOOP for the users array
            
            myArray.forEach(function(el, index) {
                // el - current element, i - index
            });
        -->
        <% if (data) { %>
        <% data.forEach(function(unsafefoods){ %>
            <tr>
                <td><%= unsafefoods.id %></td>
                <td><%= unsafefoods.name %></td>
                <td><%= unsafefoods.safe %></td>
                <td><%= unsafefoods.type %></td>
                <td><%= unsafefoods.favourite %></td>
                <td><%= unsafefoods.water %></td>
                <td><%= unsafefoods.energy %></td>
                <td><%= unsafefoods.vitaminC %></td>
                <td><%= unsafefoods.sugars %></td>
                <td><%= unsafefoods.lipidFat %></td>
                <td><%= unsafefoods.calcium %></td>
                <td><%= unsafefoods.phosphorus %></td>
                <td><%= unsafefoods.capRatio %></td>
                <td>
                    <div style="float:left">
                        <a href='/unsafefoods/edit/<%= unsafefoods.id %>'>Edit</a> &nbsp;                            
                        <form method="post" action="/unsafefoods/delete/<%= unsafefoods.id %>" style="float:right">
                            <input type="submit" name="delete" value='Delete' onClick="return confirm('Are you sure you want to delete?')" />
                            <input type="hidden" name="_method" value="DELETE" />
                        </form>
                    </div>
                </td>
            </tr>
        <% }) %>
        <% } %>
     
    </table>
    </div>
  </main>
  <footer>
    <% include ./partials/footer %>
  </footer>
</body>

</html>

任何指针将不胜感激,

谢谢,

【问题讨论】:

    标签: javascript mysql node.js express ejs


    【解决方案1】:

    unsafefoods 变量在您的 unsafefoods.js 文件中未定义。

    你的代码应该是

    res.render('unsafefoods', {
      title: 'Unsafe foods list',
      data: rows
    })
    

    您在unsafefoods 附近缺少''。

    【讨论】:

    • 非常感谢!这让我很闲
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多