1.首先,在app.module.ts里面引入数据库
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BlogModule } from './modules/blog/blog.module';
import { join } from 'path';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'wuyunxia.00',
database: 'my-node',
entities: [join(__dirname, '../', 'dist', '**/**.entity{.ts,.js}')],
synchronize: true,
}),
BlogModule
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
- 在entity文件里面注册上所需表的所有字段
import { CustomBaseEntity } from "src/common/entity";
import { Column, Entity } from "typeorm";
@Entity({ name: 'blog' })
export class Blog extends CustomBaseEntity{
@Column('varchar', {
comment: '标题',
default: ''
})
title: string;
@Column('longtext', {
comment: '内容',
default: null
})
content: string;
@Column('varchar', {
comment: '标签',
default: null
})
tag: string;
@Column('varchar', {
comment: '描述',
default: ''
})
description: string;
@Column('varchar', {
name: 'cover_pic',
comment: '封面',
default: ''
})
coverPic: string;
}
- 新建文件夹,名为dto,里面文件写你所定义的字段默认值等
import { IsNotEmpty } from "class-validator";
export class BlogDTO {
@IsNotEmpty({
message: '标题不能为空!'
})
title: string;
@IsNotEmpty({
message: '内容不能为空!'
})
content: string;
}
export class CreateDto {
@IsNotEmpty({
message: '标题不能为空!'
})
title: string;
@IsNotEmpty({
message: '内容不能为空!'
})
content: string;
tag: string;
description: string;
coverPic: string;
id: number;
}
4.在Controller里面写接口,传参等
import { Body, Controller, Get, Param, Post } from "@nestjs/common";
import { CreateDto } from "./dto/blog.dto";
import { BlogService } from "./blog.service";
@Controller('blog')
export class BlogController {
constructor(private readonly BlogService: BlogService) {}
// 新增博客
@Post('/add')
create(@Body() param: CreateDto) {
console.log(param);
return this.BlogService.create(param);
}
}
5.在service里面写上处理的sql,回调等(这里要用primise,不然取不到)
import { Injectable } from "@nestjs/common";
import { CreateDto } from "./dto/blog.dto";
import { InjectRepository } from "@nestjs/typeorm";
import { Repository } from "typeorm";
import { Blog } from "./blog.entity";
import { ResultType, apiResError, apiResSuccess } from "src/utils/responseCommon";
@Injectable()
export class BlogService {
constructor(
@InjectRepository(Blog)
private blogRepository: Repository<Blog>
) {}
// 新增博客
async create(param: CreateDto): Promise<ResultType> {
const { title, content, tag, description, coverPic } = param
// 查重
// const checkExit = this.blogRepository.findOne({
// where: { title, }
// })
const result = await this.blogRepository.save({
title, content, tag, description, coverPic
})
// 判断是否添加成功
if(result.id) {
return apiResSuccess()
}
return apiResError()
}
}
6.别忘了在Module里面注册你的组件
import { Module } from '@nestjs/common';
import { BlogController } from './blog.controller';
import { BlogService } from './blog.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { Blog } from './blog.entity';
@Module({
imports: [TypeOrmModule.forFeature([Blog])], // 你的表
controllers: [BlogController], // 你的controller
providers: [BlogService], // 你的service
// exports: [ArticleColumnService] // 其他页面调用时需要
})
export class BlogModule {}
最后,在app.module里面接收模块BlogModule
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { BlogModule } from './modules/blog/blog.module';
import { join } from 'path';
@Module({
imports: [
TypeOrmModule.forRoot({
type: 'mysql',
host: 'localhost',
port: 3306,
username: 'root',
password: 'root',
database: 'my-node',
entities: [join(__dirname, '../', 'dist', '**/**.entity{.ts,.js}')],
synchronize: true,
}),
BlogModule // 你的模块
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}