定义两个实体,一个是User,另一个是Article。
// src/entities/User.tsimport { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';import { Article } from './Article';
@Entity()export class User { @PrimaryGeneratedColumn() id: number;
@Column() name: string;
@OneToMany(type => Article, article => article.user) articles: Article[];}
// src/entities/Article.tsimport { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';import { User } from './User';
@Entity()export class Article { @PrimaryGeneratedColumn() id: number;
@Column() title: string;
@ManyToOne(type => User, user => user.articles) user: User;}
创建一个控制器以处理HTTP请求。
// src/controllers/user.controller.tsimport { Controller, Get, Post, Body, Param } from '@nestjs/common';import { UserService } from '../services/user.service';import { User } from '../entities/User';
@Controller('users')export class UserController { constructor(private userService: UserService) {}
@Post() async createUser(@Body() user: Partial<User>): Promise<User> { return await this.userService.createUser(user); }
// 其他控制器方法...}
也可以在serve层上使用query对mysql进行sql语句查询,下面对两张表进行连接查询。
this.usersRepository.query( `select c.name as name,c.age as age from user as u left join cat as c on u.id=c.user_id where u.id=${id}`)
也可以使用typeorm进行单个查询
findOne(id:number):Promise<User> { const options: FindOneOptions<User>={ where:{id} } return this.usersRepository.findOne(options) }
nestjs很灵活,对于前端开发者上手难度也不大
领取专属 10元无门槛券
私享最新 技术干货