网站链接太多怎么做网站地图,山东省城乡住房和建设厅网站,建站网站排行,网站免费个人空间申请经过前面的几篇文章#xff0c;想必大家已经对nestjs有了基础的了解#xff0c;那么这篇文章就带大家玩玩数据库#xff0c;学会了这篇#xff0c;就离大前端又进了一步 Nest与数据库无关#xff0c;使你可以轻松地与任何 SQL 或 NoSQL 数据库集成。 根据你的喜好#xf…经过前面的几篇文章想必大家已经对nestjs有了基础的了解那么这篇文章就带大家玩玩数据库学会了这篇就离大前端又进了一步 Nest与数据库无关使你可以轻松地与任何 SQL 或 NoSQL 数据库集成。 根据你的喜好你有多种选择。 在最一般的层面上将 Nest 连接到数据库只是为数据库加载适当的 Node.js 驱动程序的问题下面我们就学习下如何整合mysql数据库 为了与 SQL 和 NoSQL 数据库集成Nest 提供了 nestjs/typeorm 包。 TypeORM 是可用于 TypeScript 的最成熟的对象关系映射器 (ORM)。 由于它是用 TypeScript 编写的因此可以很好地与 Nest 框架集成。
依赖的安装 npm install --save nestjs/typeorm typeorm mysql2安装完成后我们在app.module.ts中引入mysql的配置
import { Module } from nestjs/common;
import { TypeOrmModule } from nestjs/typeorm;Module({imports: [TypeOrmModule.forRoot({type: mysql,host: localhost,port: 3306,username: root, //改成自己账户password: root, //改成自己密码database: test, //改成自己的数据库entities: [],synchronize: true,}),],
})
export class AppModule {}
创建实体类
这里的实体类就是java中的bean对象了解java的不陌生那么我们如何在这里定义呢 user.entity.ts
import { Column, Entity, PrimaryGeneratedColumn } from typeorm;Entity()
export class newUser{PrimaryGeneratedColumn()id:numberColumn(varchar,{length:8})firstNameColumn()lastName:stringColumn()age:number}
创建user模块
users.module.ts
import { Module } from nestjs/common;
import { TypeOrmModule } from nestjs/typeorm;
import { newUser } from ./user.entity;
import { UsersController } from ./users.controllers;
import { UsersService } from ./users.service;Module({imports:[TypeOrmModule.forFeature([newUser])], //引入了user实体providers:[UsersService],controllers:[UsersController]
})
export class UsersModule {}创建provider服务
import { Injectable } from nestjs/common;
import { InjectRepository } from nestjs/typeorm;
import { newUser } from ./user.entity;
import { DeleteResult, Repository } from typeorm;Injectable()
export class UsersService{constructor(InjectRepository(newUser) private usersRepository:RepositorynewUser){}//待完善的一系列操作数据库的方法
}创建controller服务
import { Body, Controller, Delete, Get, Param, Post } from nestjs/common;
import { UsersService } from ./users.service;
import { User } from ./interface/users.interface;Controller(users)
export class UsersController{constructor(private usersService:UsersService){}Get()getAllUsers(){return this.usersService.findAll()}Get(/:id)getUserById(Param(id) id:number){return this.usersService.getUserById(id)}Delete(/:id)deleteById(Param(id) id:number){return this.usersService.remove(id)}Post()addUserData(Body() user:User){console.log(user,add)return this.usersService.addUser(user)}
}至此创建文件就结束了此时我们可以到数据库看到多了一张表new_user 接下来我们就来进行数据的crud
增删改查
业务代码我们要写在service文件中
查
findAll():PromisenewUser[]{return this.usersRepository.find();
}如果里面没有任何数据那么返回的就是空这里我已经增加了相关数据所以会有返回结果 增
async addUser(user:newUser):Promisestring{/*** 数据库里面找不到这个数据才新增*/const isNotExist (await this.usersRepository.find()).every(item item.firstName ! user.firstName item.lastName ! user.lastName)if(isNotExist){await this.usersRepository.save(user)console.log( ~ file: users.service.ts:28 ~ UsersService ~ addUser ~ data:,ok)return ok}else{return 不允许重复添加数据}}这里是post请求我们需要借助postman等来进行操作 非常好我们成功新增了一条数据…
那如果我们增加一条已经存在的数据那结果会怎样呢我们可以试试因为我这里是不允许重名的所以无法新增成功重名会报错大家可以根据自己的实际业务需求进行操作
再次添加白眉鹰王返回提示重复数据库也没变化 删
async remove(id:number):Promisenumber{const data await this.usersRepository.delete(id)console.log(data,delete-data)return data.affected;
}根据id删了id为6的白眉再次查询数据库就少了这条数据,删除成功!!!
完整的代码如下
import { Injectable } from nestjs/common;
import { InjectRepository } from nestjs/typeorm;
import { newUser } from ./user.entity;
import { DeleteResult, Repository } from typeorm;Injectable()
export class UsersService{constructor(InjectRepository(newUser) private usersRepository:RepositorynewUser){}findAll():PromisenewUser[]{return this.usersRepository.find();}getUserById(id:number):PromisenewUser | null{return this.usersRepository.findOneBy({id})}async remove(id:number):Promisenumber{const data await this.usersRepository.delete(id)console.log(data,delete-data)return data.affected;}async addUser(user:newUser):Promisestring{/*** 数据库里面找不到这个数据才新增*/const isNotExist (await this.usersRepository.find()).every(item item.firstName ! user.firstName item.lastName ! user.lastName)if(isNotExist){await this.usersRepository.save(user)console.log( ~ file: users.service.ts:28 ~ UsersService ~ addUser ~ data:,ok)return ok}else{return 不允许重复添加数据}}
}这样我们就实现了nestjs整合mysql数据库实现数据crud了以后再也不用让求着让后端帮忙改接口了…
更多后续精彩内容请关注本系列的动态