1.创建项目

1.1 创建项目

  1. 输入命令
nest new blog-server
  1. 选择包管理器,我选的npm,习惯了

2.搭建路由

2.1 创建模块

nest g module users
nest g controller users
nest g service users

一定要按照顺序来,nest会自动创建文件并把各个模块自动引入

app.module.ts

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';@Module({imports: [UsersModule],controllers: [AppController],providers: [AppService],
})
export class AppModule {}

users.module.ts

import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';@Module({controllers: [UsersController],providers: [UsersService]
})
export class UsersModule {}

2.2 安装依赖

  1. 安装数据库的依赖
npm install @nestjs/typeorm typeorm mysql2

其中mysql2根据自己的数据库来安装,其他可见官网 https://nestjs.bootcss.com/techniques/sql

3. 配置数据库

1. 配置数据库

创建一个文件放在根目录,ormconfig.ts
nestjs在运行的时候会先去这个文件

ormconfig.json

{"type": "mysql","host": "localhost","port": 3306,"username": "root","password": "123456","database": "blog_server","entities": ["dist/**/*.entity{.ts,.js}"],"synchronize": true
}// 其中synchronize,设置为true,是因为现在是生产环境,项目刚搭建,数据库可能会有更改,如此会方便一点,这个属性的意思是可以同步数据库,如果实例文件里面删除了某个属性,数据库会同步删除,正式环境会很危险,值得注意。

这个是mysql的配置文件,其他的看官网

引入app.module.ts文件

import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { UsersModule } from './users/users.module';@Module({imports: [    TypeOrmModule.forRoot(),UsersModule],controllers: [AppController],providers: [AppService],
})
export class AppModule {}

4. 启动项目

  1. 查看package.json
{"name": "blog-server","version": "0.0.1","description": "","author": "","private": true,"license": "UNLICENSED","scripts": {"prebuild": "rimraf dist","build": "nest build","format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"","start": "nest start","start:dev": "nest start --watch","start:debug": "nest start --debug --watch","start:prod": "node dist/main","lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix","test": "jest","test:watch": "jest --watch","test:cov": "jest --coverage","test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand","test:e2e": "jest --config ./test/jest-e2e.json"},"dependencies": {"@nestjs/common": "^8.0.0","@nestjs/core": "^8.0.0","@nestjs/platform-express": "^8.0.0","reflect-metadata": "^0.1.13","rimraf": "^3.0.2","rxjs": "^7.2.0"},"devDependencies": {"@nestjs/cli": "^8.0.0","@nestjs/schematics": "^8.0.0","@nestjs/testing": "^8.0.0","@types/express": "^4.17.13","@types/jest": "27.0.2","@types/node": "^16.0.0","@types/supertest": "^2.0.11","@typescript-eslint/eslint-plugin": "^5.0.0","@typescript-eslint/parser": "^5.0.0","eslint": "^8.0.1","eslint-config-prettier": "^8.3.0","eslint-plugin-prettier": "^4.0.0","jest": "^27.2.5","prettier": "^2.3.2","source-map-support": "^0.5.20","supertest": "^6.1.3","ts-jest": "^27.0.3","ts-loader": "^9.2.3","ts-node": "^10.0.0","tsconfig-paths": "^3.10.1","typescript": "^4.3.5"},"jest": {"moduleFileExtensions": ["js","json","ts"],"rootDir": "src","testRegex": ".*\\.spec\\.ts$","transform": {"^.+\\.(t|j)s$": "ts-jest"},"collectCoverageFrom": ["**/*.(t|j)s"],"coverageDirectory": "../coverage","testEnvironment": "node"}
}

其中运行 start:dev ,这样修改代码时服务会自动重启

npm run start:dev

5. 创建实例

1. 创建用户实例表

  1. 在users文件夹下创建user.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';@Entity()
export class User {@PrimaryGeneratedColumn()uid: number;@Column()nickname: string;@Column()mobile_number: string;@Column()email: string;@Column()password: string;
}

创建一个用户实体

  1. 导入users.module.ts
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
import { User } from './user.entity';@Module({imports: [TypeOrmModule.forFeature([User])],controllers: [UsersController],providers: [UsersService],
})
export class UsersModule {}

服务自动重启或者重新启动服务,这样你就可以在你的数据库中看到user表

2. 添加校验

  1. 安装依赖
npm install class-validator class-transformer
  1. 在user文件夹下创建文件夹dtos,添加文件create-user.dto.ts
    create-user.dto.ts
import { IsEmail, IsString } from 'class-validator';export class CreateUserDto {@IsString()nickname: string;@IsNumber()mobile_number: string;@IsEmail()email: string;@IsString()password: string;
}
  1. 在main.ts中添加白名单

main.ts

import { NestFactory } from '@nestjs/core';
import { ValidationPipe } from '@nestjs/common';
import { AppModule } from './app.module';async function bootstrap() {const app = await NestFactory.create(AppModule);app.useGlobalPipes(new ValidationPipe({whitelist: true,}),);await app.listen(3000);
}
bootstrap();
  1. 配置接口路由

users.controller.ts

import { Body, Controller, Post } from '@nestjs/common';
import { CreateUserDto } from './dtos/create-user.dto';@Controller('auth')
export class UsersController {@Post('/signup')createUser(@Body() body: CreateUserDto) {console.log(body);}
}
  1. 在POSTMAN中调用接口测试

3. 连接数据库存储数据

  1. 配置users.service.ts 创建create方法

users.service.ts

import { Injectable } from '@nestjs/common';
import { Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';
import { User } from './user.entity';
@Injectable()
export class UsersService {constructor(@InjectRepository(User) private repo: Repository<User>) {}create(nickname: string,mobile_number: string,email: string,password: string,) {const user = this.repo.create({ nickname, mobile_number, email, password });return this.repo.save(user);}
}
  1. controller引用

users.controller.ts

import { Body, Controller, Post } from '@nestjs/common';
import { CreateUserDto } from './dtos/create-user.dto';
import { UsersService } from './users.service';@Controller('auth')
export class UsersController {constructor(private usersService: UsersService) {}@Post('/signup')createUser(@Body() body: CreateUserDto) {console.log(body);this.usersService.create(body.nickname,body.mobile_number,body.email,body.password,);}
}
  1. POSTMAN调用

NestJS初步学习,创建新用户相关推荐

  1. Ubuntu创建新用户的正确姿势

    作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<Ubuntu 创建新用户的正确姿势>原文地址.更欢迎来我的小站看更多原创内容:godbmw.com,进行&q ...

  2. mysql设置用户永不过期_在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户

    第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...

  3. 怎么给当前计算机添加一个用户,电脑如何设置新用户 电脑创建新用户的方法...

    今天给大家带来电脑如何设置新用户,电脑创建新用户的方法,让您轻松解决问题. 有些时候我们为了能更为灵活的管理电脑使用情况,我们可以给电脑设置不同的用户,那么怎么给电脑设置新用户呢?下面是学习啦小编整理 ...

  4. mysql创建新用户

    学习目标: 提示:通过学习mysql创建新用户,掌握mysql的基本命令 学习内容: 提示:mysql创建新用户 例如: 进入mysql终端. use mysql;使用mysql数据库. 新建MySQ ...

  5. 如何在windows server 2012创建新用户与组?

    首先我们进入系统桌面,然后右击左下角的窗口图标,点击计算机管理: 点击本地用户和组,我们先对用户进行管理,所以我们点击用户,后面我们会对组进行管理,点击组就好了: 这里已经有了系统内置的账户和我自己创 ...

  6. navicat新建mysql用户_Navicat使用教程:在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户...

    第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...

  7. navicat创建mysql用户_在 Navicat Premium 中管理 MySQL 用户-第 2 部分:创建新用户

    2018 年 6 月 5 日,由 Robert Gravelle 撰写 第 2 部分:创建新用户 第 2 部分:创建新用户第 1 部分中,我们学习了如何使用 Navicat Premium 用户管理工 ...

  8. win7计算机创建新用户,win7系统无法创建新用户的解决方法

    很多小伙伴都遇到过win7系统无法创建新用户的困惑吧,一些朋友看过网上零散的win7系统无法创建新用户的处理方法,并没有完完全全明白win7系统无法创建新用户是如何解决的,今天小编准备了简单的解决办法 ...

  9. ubuntu修改新增用户的目录_Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法...

    以下介绍在Ubuntu 18.04系统下创建新用户/目录.修改用户权限及删除用户的正确方法.在Ubuntu系统上创建新用户使用[sudo useradd 用户名]命令,但只能创建用户,不能在/home ...

  10. linux下创建新用户以及删除

    这篇博客源于今天早上的好奇心,突然好奇我们老大是怎么给我们分配子用户的,是不是每个项目经理都要在服务器上建几个子用户给员工用呢?所以呢,很想研究下怎么新建用户. 一.linux下新建用户 1.使用us ...

最新文章

  1. WIN7 常见问题及解决方法
  2. ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测
  3. 剑指offer之判断二叉树是不是平衡二叉树
  4. 百度地图android绘图类,Class:android总类/android离线地图类
  5. GJM : Unity3D HIAR -【 快速入门 】 三、导入 SDK
  6. 【法克鱿】域名DNS设置修改失败!
  7. Redis的两种持久化介绍与对比
  8. 开源Dimdim是网络会议的桥接方案
  9. INSERT INTO SELECT 语句
  10. maven 运行 java_maven运行java项目
  11. React 可视化开发工具 shadow-widget 最佳实践(上)
  12. python 正则表达式 匹配任意长度英文字母
  13. ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
  14. 【idea】两台电脑协同办公
  15. 专升本计算机笔记 计算机基础知识
  16. Kubernetes部署
  17. 插件式换肤框架搭建 - 资源加载源码分析
  18. 【CXY】JAVA基础 之 System
  19. java实现 xls转xlsx
  20. RxJava过滤操作符 filter

热门文章

  1. dbfmpi——树莓派豆瓣电台fm发射器
  2. Eigen库学习教程(全)
  3. STM32 软件开发环境搭建
  4. vscode指定扩展安装位置
  5. 传指针和传指针引用的区别(指针和引用的区别)
  6. 无线网络真的安全吗?
  7. 2010美国高校计算机系排行榜出炉
  8. Bootstrap系列之延伸链接(Stretched link)
  9. vb.net设置分辨率和缩放比例_【华鹏客服维修部】配置高不一定性能强,Win 10做好这些设置才能“6到飞起”!...
  10. Hadoop之常见压缩格式以及性能对比