iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >nestjs+typeorm+mysql基本使用学习
  • 778
分享到

nestjs+typeorm+mysql基本使用学习

学习node.jsmysql 2023-08-22 18:08:50 778人浏览 薄情痞子
摘要

初始化项目 安装依赖 npm i -g @nest/cli 新建项目 nest new project-name 命令行创建 创建Controller:nest g co test 创建Module:nest g mo test 创建Ser

初始化项目

安装依赖

npm i -g @nest/cli

新建项目

nest new project-name

命令行创建

创建Controller:nest g co test
创建Module:nest g mo test
创建Service:nest g service test

请求创建

123123

接口文档swagger

安装依赖

npm install @nestjs/swagger swagger-ui-express

装饰器

Controller装饰器:@apiTags(“Controller标签”)
Controller装饰器:@ApiBearerAuth(),用于token鉴权,在文档页设置token
Api装饰器:@Apioperation({ summary: ‘Api摘要’, description: ‘Api描述’ })
模型字段装饰器:@ApiProperty({ description: ‘字段描述’ }),字段必填
模型字段装饰器:@ApiPropertyOptional({ description: ‘字段描述’ }),字段非必填

注册使用

// main.tsimport { NestFactory } from '@nestjs/core';import { AppModule } from './app.module';import {  DocumentBuilder,  SwaggerDocumentOptions,  SwaggerModule,} from '@nestjs/swagger';const app = await NestFactory.create(AppModule, { cors: true });const swaggerOption = new DocumentBuilder()    .setTitle('接口文档') // 文档标题    .setDescription('用来展示API信息') // 文档描述    .setVersion('1.0') // 文档版本号    .addTag('') // 标签    .addBearerAuth() // token鉴权    .build();    const document = SwaggerModule.createDocument(app, swaggerOption);// 第一个参数是文档访问路径前缀SwaggerModule.setup('doc', app, document);await app.listen(3000);// 访问文档路径:Http://localhost:3000/doc

管道(验证)

安装依赖

npm install class-validator class-transfORMer

装饰器

模型字段装饰器:@IsNotEmpty({ message: “xxx字段为必填项” })

常用方法

import { isBoolean, isNumber, isArray, validate} from 'class-validator';import { plainToClass } from 'class-transformer';// isBoolean 是否为布尔值// isNumber 是否为数字// isArray 是否为数组// validate 验证配置的验证规则// plainToClass 将对象转换为Class,用以获取验证规则进行验证

注册使用

管道使用需要注册:
在main.ts中全局注册管道:

// main.tsimport { ValidationPipe } from '@nestjs/common';app.useGlobalPipes(new ValidationPipe());

数据库操作(TypeORM+Mysql

安装依赖

npm i typeorm mysql

数据源

实体

装饰器

实体是由@Entity装饰器装饰的模型。

// name对应数据库表名,schema对应数据库名,name可简写@Entity({name:"table_name",schema:"schema_name"})@Entity({"table_name",schema:"schema_name"})

表列是由@Column装饰器装饰的实体属性。
主列是由@PrimaryColumn装饰器装饰的实体属性。
自动生成的列是由@PrimaryGeneratedColumn装饰器装饰的实体属性。

列数据类型

数据类型一般会根据实体属性定义的类型进行推断,如:number将被转换为integer,string将转换为varchar,boolean转换为bool等。也可以自行设置,如下:

// type可以简写@Column("int")@Column({type: "int"})@Colunm("int", {name: "field_name", length: 100, unique: true, ...})

更多配置

关系

import { Entity, Column, PrimaryGeneratedColumn, ManyToOne, OneToMany, OneToOne, JoinColumn } from "typeorm";@Entity()export class CateGory {    @PrimaryGeneratedColumn()    id: number;    @Column()    name: string;    @Column()    description: string;@OneToOne(type => Category)@JoinColumn()item: Category;    @OneToMany(type => Category, category => category.children)    parent: Category;    @ManyToOne(type => Category, category => category.parent)    children: Category;}

@OneToOne:一对一
@OneToMany:一对多,总是包含反向关系,不能单独出现,需要和@ManyToOne一起使用,关系拥有者为多对一的一侧
@ManyToOne:多对一
@JoinColumn:实体键的对应关系,仅在关系的一侧使用,关系拥有者使用,关系的拥有方包含数据库中具有外键的列
TODO:多对多比较复杂,还需研究
@ManyToMany:多对多
@JoinTable():需要指定这是关系的所有者方

参数1,type=>Category,返回当前实体想要建立关系的目标实体类
参数2,category=>category.xxx,用以指定反向关系,当前实体存储在目标实体的xxx属性

Entity Manager 和 Repository

Entity Manager,实体管理器,可以管理(insert, update, delete, load 等)任何实体。EntityManager 就像放一个实体存储库的集合的地方。

Repository就像EntityManager一样,但其操作仅限于具体实体。

来源地址:https://blog.csdn.net/qq_38872934/article/details/131919960

您可能感兴趣的文档:

--结束END--

本文标题: nestjs+typeorm+mysql基本使用学习

本文链接: https://www.lsjlt.com/news/377987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • nestjs+typeorm+mysql基本使用学习
    初始化项目 安装依赖 npm i -g @nest/cli 新建项目 nest new project-name 命令行创建 创建Controller:nest g co test 创建Module:nest g mo test 创建Ser...
    99+
    2023-08-22
    学习 node.js mysql
  • Android Gson基本用法学习
    目录1. 导入Android Studio工程2. 简单的 Java Object 序列化/反序列化序列化反序列化3. 嵌套 Java Object 的序列化/反序列化4. Arra...
    99+
    2024-04-02
  • python基础学习8----文件基本操
    一.文件的打开,open函数 f = open(file_name,mode)#创建文件对象 打开模式有很多种   1. 'r': 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。   2. 'r+': 打开一个文件...
    99+
    2023-01-30
    文件 基础 python
  • Flutter基本组件Basics Widget学习
    目录1. 概述2. 常用组件2.1 Text2.1.1 TextStyle2.1.2 TextSpan2.1.3 DefaultTextStyle2.1.4 使用字体2.2 Butt...
    99+
    2024-04-02
  • H3C基本命令学习(整理)
    sysname   [H3C] sysname AR2830 [AR2830]   super password   super password [  level  user-level ] {simple | cipher} passw...
    99+
    2023-01-31
    命令 H3C
  • Python深度学习实战PyQt5基本控件使用解析
    目录1. PyQt5 控件简介1.1 什么是控件1.2 编辑控件的属性1.3 PyQt5 的控件类型输入控件:显示控件:高级控件:2. 按钮控件2.1 按钮控件简介2.2 按键按钮(...
    99+
    2024-04-02
  • Node http模块学习:聊聊基本用法
    本篇文章给大家了解一下Node.js http模块,介绍一下createServer和listen方法,希望对大家有所帮助!http 模块使用 Node.js 中创建 Web 服务,主要依赖内置的 http 模块。经典的 express.j...
    99+
    2023-05-14
    node HTTP模块
  • avaScript基础学习-基本的语法规则
    目录一、运算符二、分支语句三、循环语句四、异常的捕获与处理五、js中的this关键字六、let与const定义变量使用规则七、js中的void链接八、异步编程setTimeout九、...
    99+
    2024-04-02
  • MySQL的基本使用
    目录 1、数据库基础 2、MySQL数据库的使用 3、数据库基本操作 4、常用函数 5、MySQL自带库 1、数据库基础 数据(Data):图像、语音、文字等 在计算机系统中,各种字母、数字符号的组合、语音、图形、图像等统称为数据。 ...
    99+
    2023-10-06
    网络安全 web安全 安全 mysql
  • 零基础学习Python文本处理
    源 | 小象     文 | 贾庸本文将带领小伙伴们一起,使用Python进行文本处理,先来看下要处理的文本, 文件名为“data.txt”, 文件里面的内容是三行中英对照的文本,和两个空行,我们要实现的功能就是从这三行文本中分别抽取出中文...
    99+
    2023-01-31
    文本 基础 Python
  • 入门学习Go的基本语法
    目录1. 变量与常量Golang 中的标识符与关键字Golang 中的变量Golang 中的常量Golang 中的iota常量计数器2. 基本数据类型Golang 中的整型Golan...
    99+
    2024-04-02
  • Flutter入门学习Dart语言变量及基本使用概念
    目录正文变量变量的声明赋值变量的划分默认值变量的类型推断修饰符Late变量类型判断is和类型转换as一些重要概念空安全和可空类型表达式和语句注释DartPad正文 Dart是Goog...
    99+
    2024-04-02
  • MySQL基础学习之字符集的应用
    目录字符集的查询与修改字符集比较规则utf8mb3和 utf8mb4比较规则后缀含义字符集常用SQL字符集的查询与修改 在mysql 8.0版本之前, 默认字符集是latin1, 使用默认字符集的时候输入中文会出现乱码问...
    99+
    2023-05-16
    MySQL字符集应用 MySQL字符集 MySQL基础
  • Python学习5——基本格式化输出
    整数的格式化输出   十进制、八进制、十六进制 num01 = 100 print("十进制输出:%d"%num01) print("八进制输出:%o"%num01) print("十六进制输出:%x"%num01) #放在一行 pr...
    99+
    2023-01-30
    Python
  • Golang简介与基本语法的学习
    目录一、什么是Golang?二、安装Golang三、编写Hello World程序四、基本语法4.1 变量4.2 数组和切片4.3 控制流五、并发编程一、什么是Golang? Gol...
    99+
    2023-05-16
    Golang简介 Golang基本语法
  • Netty学习教程之基础使用篇
    什么Netty?Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。也就是说,Netty 是一个基于NIO的客户、服务器端编程框架...
    99+
    2023-05-31
    netty 基础
  • 分享基本学习Java必看的书
    本篇文章给大家分享的是有关分享基本学习Java必看的书,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 《深入理解Java虚拟机:JVM高级特性与最佳实践》如果你不满足...
    99+
    2023-05-31
    java ava
  • javascript 学习笔记(一)DOM基本操作
    html部分代码: 当点击show按钮时,触发showValue函数,将input value的值动态添加到id="text"的元素节点中! 复制代码 代码如下: <p>...
    99+
    2022-11-21
    DOM 基本操作
  • MySQL学习之基础操作总结
    目录1.库的操作2.表的操作创建表查看表结构删除表修改表1.库的操作 查看当前mysql数据库下默认有哪些库 show databases; 创建一个库 create databas...
    99+
    2024-04-02
  • mysql学习笔记之基础测试
    10. 基础测试 10.1...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作