NestJS初步学习,创建新用户
1.创建项目
1.1 创建项目
- 输入命令
nest new blog-server
- 选择包管理器,我选的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 安装依赖
- 安装数据库的依赖
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. 启动项目
- 查看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. 创建用户实例表
- 在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;
}
创建一个用户实体
- 导入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. 添加校验
- 安装依赖
npm install class-validator class-transformer
- 在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;
}
- 在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();
- 配置接口路由
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);}
}
- 在POSTMAN中调用接口测试
3. 连接数据库存储数据
- 配置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);}
}
- 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,);}
}
- POSTMAN调用
NestJS初步学习,创建新用户相关推荐
- Ubuntu创建新用户的正确姿势
作者按:因为教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步<Ubuntu 创建新用户的正确姿势>原文地址.更欢迎来我的小站看更多原创内容:godbmw.com,进行&q ...
- mysql设置用户永不过期_在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户
第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...
- 怎么给当前计算机添加一个用户,电脑如何设置新用户 电脑创建新用户的方法...
今天给大家带来电脑如何设置新用户,电脑创建新用户的方法,让您轻松解决问题. 有些时候我们为了能更为灵活的管理电脑使用情况,我们可以给电脑设置不同的用户,那么怎么给电脑设置新用户呢?下面是学习啦小编整理 ...
- mysql创建新用户
学习目标: 提示:通过学习mysql创建新用户,掌握mysql的基本命令 学习内容: 提示:mysql创建新用户 例如: 进入mysql终端. use mysql;使用mysql数据库. 新建MySQ ...
- 如何在windows server 2012创建新用户与组?
首先我们进入系统桌面,然后右击左下角的窗口图标,点击计算机管理: 点击本地用户和组,我们先对用户进行管理,所以我们点击用户,后面我们会对组进行管理,点击组就好了: 这里已经有了系统内置的账户和我自己创 ...
- navicat新建mysql用户_Navicat使用教程:在Navicat Premium中管理MySQL用户 - 第2部分:创建新用户...
第2部分:创建新用户 在第1部分中,我们学习了如何使用Navicat Premium用户管理工具保护MySQL root帐户.本篇文章将讨论设置新用户的帐户详细信息,帐户限制和SSL设置. The G ...
- navicat创建mysql用户_在 Navicat Premium 中管理 MySQL 用户-第 2 部分:创建新用户
2018 年 6 月 5 日,由 Robert Gravelle 撰写 第 2 部分:创建新用户 第 2 部分:创建新用户第 1 部分中,我们学习了如何使用 Navicat Premium 用户管理工 ...
- win7计算机创建新用户,win7系统无法创建新用户的解决方法
很多小伙伴都遇到过win7系统无法创建新用户的困惑吧,一些朋友看过网上零散的win7系统无法创建新用户的处理方法,并没有完完全全明白win7系统无法创建新用户是如何解决的,今天小编准备了简单的解决办法 ...
- ubuntu修改新增用户的目录_Ubuntu 18.04下创建新用户/目录、修改用户权限及删除用户的方法...
以下介绍在Ubuntu 18.04系统下创建新用户/目录.修改用户权限及删除用户的正确方法.在Ubuntu系统上创建新用户使用[sudo useradd 用户名]命令,但只能创建用户,不能在/home ...
- linux下创建新用户以及删除
这篇博客源于今天早上的好奇心,突然好奇我们老大是怎么给我们分配子用户的,是不是每个项目经理都要在服务器上建几个子用户给员工用呢?所以呢,很想研究下怎么新建用户. 一.linux下新建用户 1.使用us ...
最新文章
- WIN7 常见问题及解决方法
- ML之分类预测:基于sklearn库的七八种机器学习算法利用糖尿病(diabetes)数据集(8→1)实现二分类预测
- 剑指offer之判断二叉树是不是平衡二叉树
- 百度地图android绘图类,Class:android总类/android离线地图类
- GJM : Unity3D HIAR -【 快速入门 】 三、导入 SDK
- 【法克鱿】域名DNS设置修改失败!
- Redis的两种持久化介绍与对比
- 开源Dimdim是网络会议的桥接方案
- INSERT INTO SELECT 语句
- maven 运行 java_maven运行java项目
- React 可视化开发工具 shadow-widget 最佳实践(上)
- python 正则表达式 匹配任意长度英文字母
- ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
- 【idea】两台电脑协同办公
- 专升本计算机笔记 计算机基础知识
- Kubernetes部署
- 插件式换肤框架搭建 - 资源加载源码分析
- 【CXY】JAVA基础 之 System
- java实现 xls转xlsx
- RxJava过滤操作符 filter