国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

前端 | 嘿,Nest.js實戰開發系列之使用TypeORM操作數據庫

開發 前端 MySQL
本篇文章介紹了mysql和typeorm之間的關系,typeorm的配置,nest是如何通過typeorm連接數據庫,以及簡單的用戶表數據查詢。

寫在前面

在上一篇文章《【前端】嘿,Nest.js實戰開發系列 01 ── Nest.js初體驗》中介紹了如何上手nest.js,同時詳細介紹了如何進行項目創建、路由訪問和創建模塊,這些都是項目實踐的基礎。隨著項目的推進,我們就要考慮如何實現數據庫的連接和使用,這樣可以用來實現前后端數據交互的數據存儲。

環境準備:

  • Mysql 5.7
  • TypeORM 0.2.34

TypeORM集成

在Nest.js中可以使用任意數據庫,且內部集成提供了TypeORM 和 Sequelize ,開箱即用@nestjs/typeorm和@nestjs/sequelize包。Nest 使用TypeORM,因為它是可用于 TypeScript 的最成熟的對象關系映射器 (ORM)。由于它是用 TypeScript 編寫的,因此它可以很好地與 Nest 框架集成。

要開始使用它,我們首先安裝所需的依賴項。在命令行中輸入:

  1. $ npm install --save @nestjs/typeorm typeorm mysql2 

安裝完畢后,可以將TypeOrmModule導入根目錄AppModule。

app.module.ts

  1. import { Module } from '@nestjs/common'
  2. import { TypeOrmModule } from '@nestjs/typeorm'
  3.  
  4. @Module({ 
  5.   imports: [ 
  6.     TypeOrmModule.forRoot({ 
  7.       type: 'mysql'
  8.       host: 'localhost'
  9.       port: 3306, 
  10.       username: 'root'
  11.       password'root'
  12.       database'test'
  13.       entities: [], 
  14.       synchronize: true
  15.     }), 
  16.   ], 
  17. }) 
  18. export class AppModule {} 

切記:synchronize: true不應在生產中使用設置- 否則您可能會丟失生產數據。

該forRoot()方法支持TypeORM包中的createConnection()函數公開的所有配置屬性。此外,還有幾個額外的配置屬性如下所述。

當然,也可以在根目錄下創建ormconfig.json文件,在文件中進行數據庫信息的設置。

ormconfig.json

  1.   "type""mysql"
  2.   "host""localhost"
  3.   "port": 3306, 
  4.   "username""root"
  5.   "password""root"
  6.   "database""test"
  7.   "entities": ["dist/**/*.entity{.ts,.js}"], 
  8.   "synchronize"true 

然后,我們可以在forRoot()沒有任何選項的情況下調用:

app.module.ts

  1. import { Module } from '@nestjs/common'
  2. import { TypeOrmModule } from '@nestjs/typeorm'
  3.  
  4. @Module({ 
  5.   imports: [TypeOrmModule.forRoot()], 
  6. }) 
  7. export class AppModule {} 

注意:靜態 glob 路徑(例如,dist/**/*.entity{ .ts,.js})將無法與webpack正常工作。

其實,ormconfig.json文件是由typeorm庫加載的,因此不會應用額外的屬性設置。TypeORM 提供了getConnectionOptions從ormconfig文件或環境變量中讀取連接選項的函數。

完成以上操作后,TypeORMConnection和EntityManager對象將可用于在整個項目中注入(無需導入任何模塊)。

app.module.ts

  1. import { TypeOrmModule } from '@nestjs/typeorm'
  2. import { Connection } from "typeorm"
  3. import { UsersModule } from './users/users.module'
  4.  
  5.  
  6. @Module({ 
  7.   imports: [ 
  8.     TypeOrmModule.forRoot(), 
  9.     UsersModule 
  10.   ], 
  11.   controllers: [AppController], 
  12.   providers: [AppService], 
  13. }) 
  14. export class AppModule { 
  15.   constructor(private connectionConnection){} 

存儲庫模式

TypeORM支持存儲庫設計模式,因此每個實體都有自己的存儲庫。這些存儲庫可以從數據庫連接中獲得。

下面創建一個用戶實體,users.entity.ts在users目錄下,

users.entity.ts

  1. import {Entity, PrimaryGeneratedColumn, Column, BeforeInsert, JoinTable, ManyToMany, OneToMany} from 'typeorm'
  2. import { IsEmail } from 'class-validator'
  3. import * as argon2 from 'argon2'
  4. import { ArticleEntity } from '../article/article.entity'
  5.  
  6. @Entity('user'
  7. export class UserEntity { 
  8.  
  9.   @PrimaryGeneratedColumn() 
  10.   id: number; 
  11.  
  12.   @Column() 
  13.   username: string; 
  14.  
  15.   @Column() 
  16.   @IsEmail() 
  17.   email: string; 
  18.  
  19.   @Column({default''}) 
  20.   bio: string; 
  21.  
  22.   @Column({default''}) 
  23.   image: string; 
  24.  
  25.   @Column() 
  26.   password: string; 
  27.  
  28.   @BeforeInsert() 
  29.   async hashPassword() { 
  30.     this.password = await argon2.hash(this.password); 
  31.   } 
  32.  
  33.   @ManyToMany(type => ArticleEntity) 
  34.   @JoinTable() 
  35.   favorites: ArticleEntity[]; 
  36.  
  37.   @OneToMany(type => ArticleEntity, article => article.author) 
  38.   articles: ArticleEntity[]; 

現在開始使用Users實體,只需要在users.module.ts文件中通過entities模塊forFeature()方法選項中的數組來進行導入。

users.module.ts

  1. import { Module } from '@nestjs/common'
  2. import { UsersController } from './users.controller'
  3. import { UsersService } from './users.service'
  4. import {UsersEntity} from "./users.entity"
  5. import { TypeOrmModule } from '@nestjs/typeorm'
  6. @Module({ 
  7.   imports: [TypeOrmModule.forFeature([UsersEntity])], 
  8.   providers: [UsersService], 
  9.   controllers: [ 
  10.     UsersController 
  11.   ], 
  12.   exports: [UsersService] 
  13. }) 
  14. export class UsersModule {} 

此模塊使用forFeature()來定義在當前范圍內注冊了那些存儲庫,此時將可以使用裝飾器將UsersRepository注入到`UsersService @InjectRepository().

users.service.ts

  1. import {Get, Post, Body, Put, Delete, Query, Param, Controller} from '@nestjs/common'
  2. import { UsersService } from './users.service'
  3.  
  4. @Controller('user'
  5. export class UsersController { 
  6.   constructor(private readonly usersService: UsersService){} 
  7.  
  8.   // 查找指定用戶 
  9.   @Get("find/:id"
  10.   async findById(@Query("id") id: number){ 
  11.     return this.usersService.findById(id); 
  12.      
  13.   } 

數據表間的關系

關系是在兩個或多個表之間建立的關聯,是基于每張表的公共字段,通常是主鍵和外鍵。

數據表之間有三種關系:

因此,在實體中定義關系可以使用相應的裝飾器。

測試代碼

users.controller.ts

  1. import {Get, Post, Body, Put, Delete, Query, Param, Controller} from '@nestjs/common'
  2. import { UsersService } from './users.service'
  3.  
  4. @Controller('user'
  5. export class UsersController { 
  6.   constructor(private readonly usersService: UsersService){} 
  7.  
  8.   // 查找指定用戶 
  9.   @Get("find/:id"
  10.   async findById(@Query("id") id: number){ 
  11.     return this.usersService.findById(id); 
  12.      
  13.   } 

當我們運行代碼時,數據庫自動生成了users表。

而當我們在postman向服務器請求指定id的用戶信息時,請求結果如下所示:

后臺顯示結果如下:

我們看到以上代碼測試是正確的。

小結

本篇文章介紹了mysql和typeorm之間的關系,typeorm的配置,nest是如何通過typeorm連接數據庫,以及簡單的用戶表數據查詢。

其實筆者之前也用過 Sequelize ,現在想要嘗試typeorm和nest的搭配,所以文章寫的有些亂,建議諸位多加查看官方文檔:《Nest官方文檔》和《Typeorm官方文檔》

 

責任編輯:姜華 來源: 前端萬有引力
相關推薦

2021-06-18 06:48:54

前端Nest.js技術熱點

2011-07-01 13:42:24

QT 數據庫

2023-06-15 15:21:43

2009-09-15 09:50:07

Linq操作數據庫

2020-11-16 08:56:02

Python

2011-07-05 10:27:06

MySQL數據庫檢索排序

2011-04-19 10:20:09

數據庫

2009-07-07 09:24:37

LINQ檢索

2009-09-03 09:52:26

C# treeview

2009-08-24 16:46:04

C# 泛型

2009-08-04 14:52:33

Visual Web ASP.NET

2023-04-27 09:36:43

2023-12-27 13:44:00

數據庫系統分布式

2023-12-14 15:07:31

多線程數據庫代碼

2022-10-09 15:41:54

Python數據庫

2022-03-18 21:51:10

Nest.jsAOP 架構后端

2022-02-02 20:21:24

短信驗證碼登錄

2016-05-11 10:09:49

數據層代碼FastQuery

2009-12-28 16:57:40

ADO .NET 類

2023-05-23 16:25:48

MyBatisSQL數據庫
點贊
收藏

51CTO技術棧公眾號

欧美日韩亚洲一区二区| 欧美性猛交xxxxxx富婆| 嫩草影院国产精品| 玉足女爽爽91| 好男人免费精品视频| 狠狠躁夜夜躁人人爽超碰91| 色黄网站在线观看| 69堂亚洲精品首页| 亚洲天堂1区| 国产在线观看精品| 久久av老司机精品网站导航| 91九色porny视频| 欧美久久久影院| 澳门成人av| 99在线免费观看视频| 国产精品综合二区| jk破处视频在线| 在线观看国产精品日韩av| 性xxxx欧美老肥妇牲乱| 日本精品www| 26uuu久久天堂性欧美| av动漫免费观看| 99re在线精品| 日韩色妇久久av| 波波电影院一区二区三区| 精品国产一区二区三区| 精品亚洲一区二区三区四区五区高| 99久久er| 欧美激情在线一区二区| 极品美女一区| 国产精品88久久久久久妇女 | 北岛玲一区二区三区| 国产精品美女在线| 亚洲一区在线观看视频| 亚洲第一天堂| 国产中文在线视频| 日韩精品欧美在线| 亚洲女人天堂成人av在线| 激情综合色播五月| 美女一区网站| 国产视频在线视频| 欧美有码在线视频| 懂色av中文一区二区三区天美| 日韩一区亚洲二区| 91大神在线网站| 手机福利在线视频| 深夜精品寂寞黄网站在线观看| 97精品国产露脸对白| 欧美大奶一区二区| 日本又骚又刺激的视频在线观看| 精品久久久久亚洲| 亚洲欧美中文另类| 亚洲国产成人va在线观看天堂| 久久国产主播| 精品福利一区| 黄色在线论坛| 日韩精品视频一区二区在线观看| 国产91精品在线播放| 日韩一级二级三级| 成人激情视频网站| 在线一区欧美| 网友自拍一区| 爱情岛亚洲播放路线| www.日本一区| 亚洲va久久久噜噜噜| 亚洲男人av电影| 亚洲免费视频中文字幕| 日韩高清在线观看| 国产影视一区| 在线国产成人影院| 国产爆初菊在线观看免费视频网站| 欧美中文字幕在线观看视频| 国产精品区免费视频| 久久久免费观看| 亚洲福利在线观看| 91成人免费在线视频| 中文字幕一区二区三区不卡 | 偷拍视频一区二区| 欧美成人免费小视频| 亚洲成色999久久网站| 国产精品不卡在线| 国产成人啪午夜精品网站男同| 亚洲私拍自拍| 不卡中文一二三区| 99ri日韩精品视频| 欧美精品总汇| a毛片不卡免费看片| 性欧美ⅴideo另类hd| 性色av一区| 有码在线播放| 亚洲小说区图片区情欲小说| a在线视频观看| 日韩欧美亚洲天堂| 日本美女高潮视频| 欧美一级特黄a| 日本va中文字幕| 黄色高清无遮挡| 色哟哟精品视频| 东京热加勒比无码少妇| 亚洲熟妇av日韩熟妇在线| 久艹视频在线免费观看| 国产综合中文字幕| 狠狠干夜夜操| 青青青草原在线| 国产在线高清视频| 中文字幕人成乱码在线观看| 欧美日韩成人影院| 男人的天堂久久| 日韩一区欧美| 亚洲一区日本| 成人深夜在线观看| 欧美激情在线观看视频免费| 亚洲人午夜精品天堂一二香蕉| 一区二区在线观看视频| 91福利视频久久久久| 亚洲精品二三区| 国产高清在线精品一区二区三区| 国产精品欧美在线| 成人免费视频97| 91免费版黄色| 欧美中日韩在线| 日韩免费啪啪| 国产精品麻豆欧美日韩ww| 久久精品日产第一区二区三区高清版| 久久亚洲成人| 五月久久久综合一区二区小说| 午夜日韩电影| 懂色中文一区二区在线播放| 亚洲国产另类精品专区| 精品日产卡一卡二卡麻豆| 亚洲视频欧美视频| 国产国语videosex另类| 91香蕉国产在线观看| 一区二区三区视频| 热99在线观看| 激情丁香在线| 激情亚洲影院在线观看| 精品一区不卡| 久久激情五月婷婷| 亚洲欧美国产精品久久久久久久 | 久久久资源网| 欧美特黄一区| 欧美日韩大陆在线| 欧美人xxxxx| 久久久男人天堂| 风间由美一区二区三区在线观看| 亚洲精品一区二区三区婷婷月| bt天堂新版中文在线地址| 自拍偷拍欧美日韩| 国产欧美视频一区二区三区| 精品福利一区二区三区免费视频| 成人欧美在线观看| 91猫先生在线| 亚洲永久av| 日韩成人伦理电影在线观看| 色网站国产精品| 成人h视频在线| www污污在线| 999久久久国产999久久久| 国产精品九色蝌蚪自拍| 一区二区三区视频在线观看| 91精品国产色综合久久ai换脸| 日韩在线资源网| 在线观看日韩欧美| 超碰国产精品久久国产精品99| 成人黄色激情网站| 一道本一区二区三区| 国产欧美日韩视频在线观看| 日韩一区二区福利| 国产精彩免费视频| 免费精品国产的网站免费观看| 色悠悠久久综合| 国产视色精品亚洲一区二区| 国产区视频在线播放| 香蕉成人久久| 中文字幕日韩视频| 中文字幕av专区| 国产日韩三级| 亚洲精品国产一区二区精华液| 国产不卡av在线| 番号在线播放| 美女视频黄 久久| 伊人久久男人天堂| 免费yellow网站| 91精品二区| 亚洲电影免费观看高清| 六月婷婷激情综合| 在线一级成人| 精品精品国产高清a毛片牛牛 | 床上的激情91.| 成人动漫视频在线观看完整版| 欧美视频免费看| 欧美日韩国产高清一区| 99爱视频在线| 一区二区国产在线观看| 国产69精品99久久久久久宅男| 成人区精品一区二区不卡| 国产精品久久影院| 国产人妻人伦精品| 亚洲免费黄色|