mysql - 使用express.js + mysql + ejs + typeORM 数据未显示在 View 中

标签 mysql node.js express ejs typeorm

如果我有一些愚蠢的问题,我很抱歉,最后,我是node.js的新手,我的问题是我无法在express.js框架中显示来自实体的数据,我正在使用Mysql 带有 TypeORM 和 ejs 模板引擎。

我尝试了很多例子,下面是其中之一 https://github.com/typeorm/typescript-express-example 但似乎不起作用。

我的编辑器是VSC,下面是我的目录。 directory

下面是我的代码

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-index.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) 并渲染到 View ,我使用的是 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 - View (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();

关于mysql - 使用express.js + mysql + ejs + typeORM 数据未显示在 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56314399/

相关文章:

node.js - 我们如何阻止事件循环?

php - 如何使具有许多左连接的 mysql 查询执行得更快?

php - mysql 受 View 限制但按字母顺序排列?

node.js - chai 如何检查该函数返回一个 promise

arrays - Node.js - 从函数返回数组

javascript - 打开 chrome 开发者工具时出现双重请求

javascript - 如何编写服务器端 node.js/express 方法?

javascript - 如何根据 Handsontable 中的表格单元格值设置表格单元格外观

mysql - 无法创建存储过程

javascript - 如何正确地将用户名和密码从reactjs传递到后端进行身份验证?