Данные не отображаются в представлении с использованием express.js + mysql + ejs + typeORM - PullRequest
0 голосов
/ 26 мая 2019

Извините, если у меня есть какой-то глупый вопрос, в конце концов, я новичок в 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 - index.ts

ниже - мой index.ts, в этом скрипте я назвал маршруты (rout.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 - rout.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, это поможет мне начать с ORM и MVC в express.js для моего проекта

Ответы [ 2 ]

0 голосов
/ 26 мая 2019

теперь работает, я поставил 'ожидание', большое спасибо, ниже обновление:

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();
0 голосов
/ 26 мая 2019

Извините, ошибка

HomeController.ts:7:26 - non-arrow functions are forbidden

ниже приведены изменения

import * as express from "express";
import {getConnection} from "typeorm";
import {MasterKategori} from "../entity/MasterKategori";

class HomeController {

    public home  = async function(request: express.Request, response: express.Response) {
        const kategoriData = getConnection().getRepository(MasterKategori).find();
        const kategori = Object.entries(kategoriData);
        console.log(kategori);
        response.render("page", {kat: kategori});
    };
}

export default new HomeController();

...