文章轉自 極客論壇
第一步 創建module和service
在命令行執行如下命令,創建名爲Person的module和service。
nest g module person
nest g service person
這時,會自動生成名爲person的目錄
第二步 創建entity
在person目錄中創建文件person.entity.ts,寫入如下內容
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Person {
@PrimaryGeneratedColumn()
id: number;
@Column({ length: 100 })
name: string;
@Column('int')
age: number;
}
第三步 修改service
修改person.service.ts,內容如下
import { Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { Person } from './person.entity';
import { InjectRepository } from '@nestjs/typeorm';
@Injectable()
export class PersonService {
constructor(
@InjectRepository(Person)
private readonly personRepo: Repository<Person>
) { }
findAll(): Promise<Person[]> {
return this.personRepo.find();
}
}
第四步 修改module
修改person.module.ts,內容如下
import { Module } from '@nestjs/common';
import { PersonService } from './person.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Person } from './person.entity';
@Module({
imports: [TypeOrmModule.forFeature([Person])],
providers: [PersonService],
exports: [PersonService] // 這裏要把PersonService導出,因爲我們要在root module中使用它
})
export class PersonModule { }
第五步 修改controller
修改v1controller,添加內容
import { Controller, Get, Param, Post, Body } from '@nestjs/common';
import { HiDto } from 'src/v1/dto/hi-dto';
import { PersonService } from 'src/person/person.service';
import { Person } from '../person/person.entity';
@Controller('v1')
export class V1Controller {
constructor(
private readonly personService: PersonService
) { }
@Get('/hello/:id')
sayHello(@Param() params) {
return `Hello Controller ${params.id}`;
}
@Post('/hi/:id')
sayHi(@Body() hiDto: HiDto, @Param() params) {
console.log(hiDto);
console.log(params.id);
return hiDto;
}
@Get('/person/list')
async getPersonList(): Promise<Person[]> {
return this.personService.findAll();
}
}
第六步 運行
npm run start
在瀏覽器訪問 localhost:3000/v1/person/list
注意:
需要通過HeidiSQL在MySQL中創建你要使用的數據庫;
另外你會注意到,程序運行後會在數據庫中自動創建person表。