安裝typeorm與mysql
npm i --save @nestjs/typeorm typeorm mysql
新建User實(shí)體類(lèi)
在src
目錄下新建entities
目錄摊阀,用于存放實(shí)體類(lèi)蔬崩。
在entities
目錄下新建User實(shí)體類(lèi)涮瞻,該實(shí)體類(lèi)有id
、name
、age
三個(gè)字段
src
|--entities
|--|--User.entity.ts
User.entity.ts:
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm'
@Entity()
export class User {
@PrimaryGeneratedColumn() // 自動(dòng)生成id
id: number
@Column()
name: string
@Column()
age: number
}
新建userController
歼疮、userService
杂抽、userModule
nest g co /user
nest g s /user
nest g mo /user
src
|--entities
|--user
|--|--user.controller.ts
|--|--user.module.ts
|--|--user.service.ts
user.controller.ts:
編寫(xiě)了三個(gè)路由,通過(guò)監(jiān)聽(tīng)GET
請(qǐng)求韩脏,分別調(diào)用root
缩麸、save
、get
赡矢、remove
這四個(gè)方法
import { Controller, Get, Query } from '@nestjs/common'
import { UserService } from './user.service'
import { User } from '../entities/user.entity'
@Controller('user')
export class UserController {
constructor(private readonly userSrvice: UserService) {}
@Get()
root(): string{
return this.userSrvice.root()
}
@Get('save')
save(@Query() query): any{
console.log(query)
let user = new User()
user.name = query.name
user.age = Number(query.age)
if(query.id){
user.id = Number(query.id)
}
return this.userSrvice.save(user)
}
@Get('get')
get(@Query() query): any{
if(query.id){
query.id = Number(query.id)
}
if(query.age){
query.age = Number(query.age)
}
return this.userSrvice.get(query)
}
@Get('remove')
remove(@Query() query): any{
if(query.id){
query.id = Number(query.id)
}
if(query.age){
query.age = Number(query.age)
}
return this.userSrvice.remove(query)
}
}
user.service.ts:
實(shí)現(xiàn)了對(duì)user
表的增刪查改操作
import { Injectable } from '@nestjs/common'
import { User } from '../entities/user.entity'
import { InjectRepository } from '@nestjs/typeorm'
import { Repository } from 'typeorm'
@Injectable()
export class UserService {
constructor(@InjectRepository(User)
private readonly userRepository: Repository<User>) { }
root(): string {
return 'userService'
}
// 當(dāng)user帶有id時(shí)杭朱,save = update;當(dāng)user沒(méi)有id時(shí)吹散,save = add
async save(user: User): Promise<any> {
let res = await this.userRepository.save(user)
console.log("save: ", res)
return res
}
async getAll(): Promise<any> {
let res = await this.userRepository.find()
console.log("all user: ", res)
return res
}
async get(option: object): Promise<any> {
let res = await this.userRepository.find(option)
// let res = await this.userRepository.find({name: 'longmao'})
console.log("option user: ", res)
return res
}
async remove(option: object): Promise<any> {
let user = await this.userRepository.find(option)
let res = await this.userRepository.remove(user)
console.log("remove: ", res)
return res
}
}
user.module.ts:
通過(guò)TypeOrmModule.forFeature([User])
獲取數(shù)據(jù)庫(kù)的user
表實(shí)例
import { Module } from '@nestjs/common'
import { TypeOrmModule } from '@nestjs/typeorm'
import { UserController } from './user.controller'
import { UserService } from './user.service'
import { User } from '../entities/user.entity'
@Module({
imports: [TypeOrmModule.forFeature([User])],
controllers: [UserController],
providers: [UserService]
})
export class UserModule {}
連接數(shù)據(jù)庫(kù)
新建一個(gè)database和mysql用戶(hù)供當(dāng)前項(xiàng)目使用
mysql -u root -p
mysql> create database your_database character set utf8;
mysql> create user 'your_name'@'%' identified by 'your_password';
mysql> grant all privileges on your_database.* to 'your_name'@'%';
mysql> flush privileges;
mysql> exit;
app.module.ts:
修改app.module.ts
中的imports
字段弧械,讓nest
連接上數(shù)據(jù)庫(kù)
import { Module } from '@nestjs/common'
import { AppController } from './app.controller'
import { AppService } from './app.service'
import { UserModule } from './user/user.module'
import { TypeOrmModule } from '@nestjs/typeorm'
import { User } from './entities/user.entity'
@Module({
imports: [TypeOrmModule.forRoot({
"type": "mysql",
"host": "localhost",
"port": 3306,
"username": "fund_game",
"password": "fund_game",
"database": "fund_game",
"synchronize": true,
"entities": [User],
}), UserModule],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
測(cè)試運(yùn)行效果
npm run start
第一次運(yùn)行時(shí)會(huì)自動(dòng)創(chuàng)建User
表
向User表添加數(shù)據(jù):瀏覽器訪問(wèn)localhost:3000/user/save?name=xxx&age=18
更新User表的數(shù)據(jù):瀏覽器訪問(wèn)localhost:3000/user/get?name=xxx&age=18&id=1
查詢(xún)User表的數(shù)據(jù):瀏覽器訪問(wèn)localhost:3000/user/get?name=xxx&age=18
刪除User表的數(shù)據(jù):瀏覽器訪問(wèn)localhost:3000/user/remove?name=xxx&age=18