node.js - 如何在 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);
}
}
我的疑问如下:
有没有办法让这种结构具有多条路线,或者这种模式仅适用于 1 条路线?
如果有可能继续使用这种结构,例如,您将如何声明另一条路线?
解决方案
推荐阅读
- java - 是否可以让用户使用扫描仪输入,然后将字符输入设置为字符串以进行额外编码?
- javascript - CKEditor 关注 CSS 变化
- sql - 使用 oracle sql 预处理文本
- c# - 尝试十进制。从两位小数取整结果?特性
- php - 存储库 webhook 给了我空的 json
- git - 为什么 Git 不为我的 VPS 上的克隆存储库引入新的更改?
- javascript - 如何根据纯 Javascript 中的语言环境确定一周是从星期一还是星期日开始?
- terraform - 如何在同一计划中使用 terraform 创建和代入 IAM 角色
- c++ - 如何获取 IADsUser 对象以用于 Active Directory API?
- javascript - 尝试手动运行时“无法从上下文调用 SpreadsheetApp.getUi()”