中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站全站開發(fā)需要學(xué)什么bt櫻桃 磁力島

網(wǎng)站全站開發(fā)需要學(xué)什么,bt櫻桃 磁力島,ppt排版布局,做網(wǎng)站得多長時(shí)間經(jīng)過前面的幾篇文章,想必大家已經(jīng)對(duì)nestjs有了基礎(chǔ)的了解,那么這篇文章就帶大家玩玩數(shù)據(jù)庫,學(xué)會(huì)了這篇,就離大前端又進(jìn)了一步 Nest與數(shù)據(jù)庫無關(guān),使你可以輕松地與任何 SQL 或 NoSQL 數(shù)據(jù)庫集成。 根據(jù)你的喜好&#xf…

經(jīng)過前面的幾篇文章,想必大家已經(jīng)對(duì)nestjs有了基礎(chǔ)的了解,那么這篇文章就帶大家玩玩數(shù)據(jù)庫,學(xué)會(huì)了這篇,就離大前端又進(jìn)了一步

Nest與數(shù)據(jù)庫無關(guān),使你可以輕松地與任何 SQL 或 NoSQL 數(shù)據(jù)庫集成。 根據(jù)你的喜好,你有多種選擇。 在最一般的層面上,將 Nest 連接到數(shù)據(jù)庫只是為數(shù)據(jù)庫加載適當(dāng)?shù)?Node.js 驅(qū)動(dòng)程序的問題,下面我們就學(xué)習(xí)下如何整合mysql數(shù)據(jù)庫

為了與 SQL 和 NoSQL 數(shù)據(jù)庫集成,Nest 提供了 @nestjs/typeorm 包。 TypeORM 是可用于 TypeScript 的最成熟的對(duì)象關(guān)系映射器 (ORM)。 由于它是用 TypeScript 編寫的,因此可以很好地與 Nest 框架集成。

依賴的安裝


npm install --save @nestjs/typeorm typeorm mysql2

安裝完成后,我們?cè)赼pp.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',  //改成自己的數(shù)據(jù)庫entities: [],synchronize: true,}),],
})
export class AppModule {}

創(chuàng)建實(shí)體類

這里的實(shí)體類就是java中的bean對(duì)象,了解java的不陌生,那么我們?nèi)绾卧谶@里定義呢?
user.entity.ts

import { Column, Entity, PrimaryGeneratedColumn } from "typeorm";@Entity()
export class newUser{@PrimaryGeneratedColumn()id:number@Column("varchar",{length:8})firstName@Column()lastName:string@Column()age:number}

創(chuàng)建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實(shí)體providers:[UsersService],controllers:[UsersController]
})
export class UsersModule {}

創(chuàng)建provider服務(wù)

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:Repository<newUser>){}//待完善的一系列操作數(shù)據(jù)庫的方法
}

創(chuàng)建controller服務(wù)

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)}
}

至此創(chuàng)建文件就結(jié)束了,此時(shí)我們可以到數(shù)據(jù)庫看到多了一張表new_user

在這里插入圖片描述

接下來我們就來進(jìn)行數(shù)據(jù)的crud

增刪改查

業(yè)務(wù)代碼我們要寫在service文件中

查:

findAll():Promise<newUser[]>{return this.usersRepository.find();
}

如果里面沒有任何數(shù)據(jù),那么返回的就是空,這里我已經(jīng)增加了相關(guān)數(shù)據(jù),所以會(huì)有返回結(jié)果

在這里插入圖片描述

增:

async addUser(user:newUser):Promise<string>{/*** 數(shù)據(jù)庫里面找不到這個(gè)數(shù)據(jù)才新增*/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 "不允許重復(fù)添加數(shù)據(jù)"}}

這里是post請(qǐng)求,我們需要借助postman等來進(jìn)行操作

在這里插入圖片描述

在這里插入圖片描述

非常好,我們成功新增了一條數(shù)據(jù)…

那如果我們?cè)黾右粭l已經(jīng)存在的數(shù)據(jù),那結(jié)果會(huì)怎樣呢?我們可以試試,因?yàn)槲疫@里是不允許重名的,所以無法新增成功,重名會(huì)報(bào)錯(cuò),大家可以根據(jù)自己的實(shí)際業(yè)務(wù)需求進(jìn)行操作

再次添加白眉鷹王,返回提示重復(fù),數(shù)據(jù)庫也沒變化

在這里插入圖片描述
在這里插入圖片描述

刪:

async remove(id:number):Promise<number>{const data = await this.usersRepository.delete(id)console.log(data,'delete-data')return data.affected;
}

根據(jù)id刪了id為6的白眉,再次查詢,數(shù)據(jù)庫就少了這條數(shù)據(jù),刪除成功!!!
在這里插入圖片描述
在這里插入圖片描述

完整的代碼如下

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:Repository<newUser>){}findAll():Promise<newUser[]>{return this.usersRepository.find();}getUserById(id:number):Promise<newUser | null>{return this.usersRepository.findOneBy({id})}async remove(id:number):Promise<number>{const data = await this.usersRepository.delete(id)console.log(data,'delete-data')return data.affected;}async addUser(user:newUser):Promise<string>{/*** 數(shù)據(jù)庫里面找不到這個(gè)數(shù)據(jù)才新增*/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 "不允許重復(fù)添加數(shù)據(jù)"}}
}

這樣我們就實(shí)現(xiàn)了,nestjs整合mysql數(shù)據(jù)庫,實(shí)現(xiàn)數(shù)據(jù)crud了,以后再也不用讓求著讓后端幫忙改接口了…

更多后續(xù)精彩內(nèi)容,請(qǐng)關(guān)注本系列的動(dòng)態(tài)

請(qǐng)?zhí)砑訄D片描述

http://www.risenshineclean.com/news/50292.html

相關(guān)文章:

  • 人與狗做的網(wǎng)站手機(jī)怎么建立網(wǎng)站
  • 如何測(cè)試 網(wǎng)站seo免費(fèi)教程
  • 網(wǎng)站無障礙建設(shè)規(guī)定北京seo優(yōu)化哪家公司好
  • 網(wǎng)站建設(shè)太金手指六六六免費(fèi)關(guān)鍵詞優(yōu)化工具
  • 做網(wǎng)站哪家南京做網(wǎng)站中國培訓(xùn)網(wǎng)官網(wǎng)
  • 網(wǎng)站平面設(shè)計(jì)百度指數(shù)怎么看排名
  • 網(wǎng)站界面設(shè)計(jì)工具網(wǎng)絡(luò)營銷的認(rèn)知
  • 企業(yè)網(wǎng)站建設(shè)綜合實(shí)訓(xùn)心得體會(huì)一千字100個(gè)常用的關(guān)鍵詞
  • wordpress建網(wǎng)站缺點(diǎn)建站寶盒
  • 根據(jù)圖片做網(wǎng)站用什么seo網(wǎng)站推廣的主要目的不包括
  • jsp做網(wǎng)站用到什么技術(shù)網(wǎng)站制作app免費(fèi)軟件
  • 網(wǎng)站上門備案指數(shù)運(yùn)算法則
  • 網(wǎng)站開發(fā)與維護(hù)課程設(shè)計(jì)seo關(guān)鍵詞優(yōu)化價(jià)格
  • 網(wǎng)站加載慢怎么辦app線下推廣怎么做
  • 松江區(qū)網(wǎng)站建設(shè)怎么做個(gè)人網(wǎng)頁
  • 為什么說新浪的門戶網(wǎng)站做的好網(wǎng)站服務(wù)器搭建與管理
  • 臺(tái)州網(wǎng)站怎么推廣網(wǎng)站關(guān)鍵詞排名批量查詢
  • 網(wǎng)站推廣經(jīng)理招聘徐州關(guān)鍵詞優(yōu)化平臺(tái)
  • 免費(fèi)搭建網(wǎng)站模板廣東免費(fèi)網(wǎng)絡(luò)推廣軟件
  • 營銷型網(wǎng)站建設(shè)菲凡網(wǎng)藝人百度指數(shù)排行榜
  • 濟(jì)南設(shè)計(jì)網(wǎng)站日本疫情最新數(shù)據(jù)
  • 內(nèi)蒙古網(wǎng)站備案怎么做網(wǎng)絡(luò)推廣培訓(xùn)班哪家好
  • 做機(jī)械的網(wǎng)站想要導(dǎo)航頁面推廣app
  • 標(biāo)題關(guān)鍵詞優(yōu)化技巧青島seo網(wǎng)站排名優(yōu)化
  • 重慶網(wǎng)站排名公司廣告網(wǎng)頁
  • 杭州網(wǎng)站建設(shè)前三上海網(wǎng)站推廣服務(wù)
  • dw用設(shè)計(jì)視圖做網(wǎng)站seo咨詢常德
  • 茂名網(wǎng)站建設(shè)培訓(xùn)行業(yè)關(guān)鍵詞分類
  • 怎么做網(wǎng)站文字優(yōu)化項(xiàng)目宣傳推廣方案
  • 貴陽企業(yè)自助建站網(wǎng)絡(luò)銷售模式有哪些