我创建了一个简单的 rest-api 应用程序(nodeJS+ExpressJS+MySQL)作为测试项目。它运行良好,所以我想添加 HTML(EJS) 来显示数据,所以我一直致力于显示视图。但是,我无法将 MySQL 数据传递给 HTML。
** 由于我还在学习nodeJS,我仍然感到困惑,因为一些教程在 app.js/server.js 中添加了路由器
由于我是getAll()在控制器中创建的,所以我Restaurant.getAll()在server.js. 下面是 console.log 的结果Restaurant.getAll()。我已经尝试使用过JSON.stringtify(data),但没有任何区别。
如果有人能告诉我如何更改或修复我的代码,我将不胜感激。感谢您的所有帮助。
restaurant_list: [
RowDataPacket {
id: 1,
name: 'A',
genre: 'Japanese',
rating: 4
},
RowDataPacket {
id: 2,
name: 'B',
genre: 'Mexican',
rating: 4
},
RowDataPacket {
id: 3,
name: 'C',
genre: 'Chinese',
rating: 4
}
]
服务器.js
const express = require("express");
const Restaurant = require("./app/models/restaurant.model.js");
const app = express();
app.use(express.json()); //Used to parse JSON bodies
app.use(express.urlencoded()); //Parse URL-encoded bodies
// set the view engine to ejs
app.set('views', './app/views');
app.set('view engine', 'ejs');
// simple route
app.get("/", function(req, res) {
var data = Restaurant.getAll();
res.render("index.ejs", { data: data });
});
require("./app/routes/restaurant.routes.js")(app);
// set port, listen for requests
app.listen(3000, () => {
console.log("Server is running on port 3000.");
});
restaurant.model.js
const sql = require("./db.js");
// constructor
const Restaurant = function(restaurant) {
this.name = restaurant.name;
this.genre = restaurant.genre;
this.rating = restaurant.rating;
};
Restaurant.getAll = result => {
sql.query("SELECT * FROM restaurant_list", (err, res) => {
if (err) {
console.log("error: ", err);
result(null, err);
return;
}
console.log("restaurant_list: ", res);
result(null, res);
});
};
module.exports = Restaurant;
restaurant.routes.js
module.exports = app => {
const restaurant_list = require("../controllers/restaurant.controller.js");
// Retrieve all restaurants
app.get("/", restaurant_list.findAll);
};