首页 > 解决方案 > 如何在 TypeORM 中使用路由?

问题描述

我开始了解TypeORM,我从其Quick Start文档创建了项目,包括相同的文件夹层次结构,我遵循了所有步骤,并创建了一个正常工作的项目。但是创建的标准项目只有 1 个路由,即用户及其控制器和实体,在其主文件中具有以下声明:

索引.ts

import {Routes} from "./routes";

createConnection().then(async connection => {

  // create express app
  const app = express();
  app.use(bodyParser.json());

  // register express routes from defined application routes
  Routes.forEach(route => {
    (app as any)[route.method](route.route, (req: Request, res: Response, next: Function) => {
        const result = (new (route.controller as any))[route.action](req, res, next);
        if (result instanceof Promise) {
            result.then(result => result !== null && result !== undefined ? res.send(result) : undefined);

        } else if (result !== null && result !== undefined) {
            res.json(result);
        }
    });
});
...

user.ts - (实体)

import {UserController} from "../controller/UserController";

export const Users = [{
  method: "get",
  route: "/users",
  controller: UserController,
  action: "all"
}, {
  method: "get",
  route: "/users/:id",
  controller: UserController,
  action: "one"
}, {    
  method: "post",
  route: "/users",
  controller: UserController,
  action: "save"
}, {
  method: "delete",
  route: "/users/:id",
  controller: UserController,
  action: "remove"
}];

用户控制器.ts

import {getRepository} from "typeorm";
import {NextFunction, Request, Response} from "express";
import {Users} from "../entity/User";

export class UserController {

  private userRepository = getRepository(Users);

  async all(request: Request, response: Response, next: NextFunction) {
    return this.userRepository.find()
  }

  async one(request: Request, response: Response, next: NextFunction) {
    return this.userRepository.findOne(request.params.id);
  }

  async save(request: Request, response: Response, next: NextFunction) {
    return this.userRepository.save(request.body);
  }

  async remove(request: Request, response: Response, next: NextFunction) {
    let userToRemove = await this.userRepository.findOne(request.params.id);
    await this.userRepository.remove(userToRemove);
  }

}

我的疑问如下:

标签: node.jstypeorm

解决方案


推荐阅读