mysql - 使用 express.js + mysql + ejs + typeORM 视图中未显示数据
问题描述
如果我有一些愚蠢的问题,我很抱歉,最后,我是 node.js 的新手,我的问题是我无法在 express.js 框架中显示来自实体的数据,我正在使用 Mysql 和 TypeORM , 和 ejs 模板引擎。
我尝试了很多示例,下面是其中之一 https://github.com/typeorm/typescript-express-example 但似乎不起作用。
我的编辑器是 VSC,下面是我的目录。目录
下面是我的代码
1 - 实体(MasterKategori.ts):
import {Column, Entity, PrimaryGeneratedColumn} from "typeorm";
@Entity("mst_kategori")
export class MasterKategori {
@PrimaryGeneratedColumn()
public id: number;
@Column("varchar")
public KodeKategori: string;
@Column("varchar")
public NamaKategori: string;
@Column("varchar")
public Keterangan: string;
@Column("timestamp")
public AddDate: Date;
@Column("datetime")
public ModifiedDate: Date;
@Column("int")
public ModifiedUser: number;
@Column("int")
public AddUser: number;
}
2 - 索引.ts
下面是我的 index.ts,在这个脚本中我称之为路由(routes.ts):
import dotenv from "dotenv";
import express from "express";
import path from "path";
import "reflect-metadata";
import {createConnection} from "typeorm";
import * as routes from "./routes";
createConnection().then(async (connection) => {
dotenv.config();
const port = process.env.SERVER_PORT;
const app = express();
app.set( "views", path.join( __dirname, "views" ) );
app.set( "view engine", "ejs" );
routes.web(app);
app.listen(port);
console.log(`Alhamdulillah, aplikasi ini menggunakan port ${port}!`);
}).catch((error) => console.log("TypeORM connection error: ", error));
3 - 路线.ts:
import * as express from "express";
import HomeController from "./controllers/HomeController";
export const web = ( app: express.Application ) => {
// default homepage routes, and calling the controller
app.get( "/", HomeController.home);
};
4 - mycontroller (HomeController.ts),在这段代码中我调用实体 (MasterKategori.ts) 并渲染到视图,我使用的是 ejs 模板引擎
import * as express from "express";
import {getConnection} from "typeorm"; //calling typeORM
import {MasterKategori} from "../entity/MasterKategori"; //calling the Entity
class HomeController {
public home = (request: express.Request, response: express.Response) => {
const kategoriData = getConnection().getRepository(MasterKategori).find(); //get all data
const kategori = Object.entries(kategoriData);
response.render("page", {kat: kategori});
}
}
export default new HomeController();
5 - 视图(page.ejs)
<ul>
<% kat.forEach(function(katdata){ %>
<li><%= katdata.NamaKategori %> - <%= katdata.KodeKategori %></li>
<% }) %>
</ul>
以下是mysql表和记录:
select * from `mst_kategori`;
id KodeKategori NamaKategori Keterangan AddDate ModifiedDate ModifiedUser AddUser
------ ------------ ------------ ---------- ------------------- ------------------- ------------ ---------
1 Coba Coba Coba 2019-05-25 09:21:00 0000-00-00 00:00:00 0 0
2 lagi lagi lagi 2019-05-25 10:02:48 0000-00-00 00:00:00 0 0
不幸的是,结果在浏览器中显示为空白,如果我执行“console.log(kategori)”,则返回“[]”(未给出数据)。
我非常感谢您的任何帮助,我最终为这个问题感到头疼。
但是我是 node.js 的新手,这将帮助我从 express.js 中的 ORM 和 MVC 开始为我的项目
解决方案
它工作了现在,我把'等待',非常感谢你,下面是更新:
import * as express from "express";
import {getConnection} from "typeorm";
import {MasterKategori} from "../entity/MasterKategori";
class HomeController {
public home = async (request: express.Request, response: express.Response) => {
const kategoriData = await getConnection().getRepository(MasterKategori).find();
const kategori = Object.entries(kategoriData);
console.log(kategori);
response.render("page", {kat: kategori});
}
}
export default new HomeController();
推荐阅读
- sql - django:通过从日期中提取月份和年份进行分组
- javascript - 我如何使用来自 div 类而不是数组的这些 JS 数组数据
- javascript - 我想在 ejs 中将字符串渲染为脚本
- exception - com.microsoft.sqlserver.jdbc.SQLServerException:列名“VALUE”无效
- python - Pandas:对值进行排序,将一个特定值保留在底部
- python - 删除数据帧的每个标记化行中的停用词
- javascript - VS2017(Apache Cordova)中缺少调试设备
- javascript - React Native:使用 .map 而不是 Flatlist 好吗?
- javascript - jest-allure 的 Javascript allure-results 指定输出目录
- angular - 单元测试时如何模拟 Angular BehaviourSubject