nest
aminwangaa
终究是走上了勤能补拙的路~~~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
nest access_token、refresh_token实现用户登录及无感刷新
思路用户登录 返回给前端 ACCESS_TOKEN(1h)、REFRESH_TOKEN(7d)、和 ACCESS_TOKEN 的失效时间(1h)其他的接口请求时 携带 ACCESS_TOKENAxios处理:前端根据 ACCESS_TOKEN 的失效时间判断过期或者即将过期, 或者接口返回用户校验失败401的错误,前端向后端发送刷新 REFRESH_TOKEN 的接口刷新 ACCESS_TOKEN、REFRESH_TOKEN后端nestjs:authGuard拦截接口,判断是否需要accessTo原创 2022-03-07 11:31:36 · 2894 阅读 · 2 评论 -
nest 集成redis
使用ioredis安装$ npm install ioredis -D初始化redisimport Redis from 'ioredis';export const REDIS_DB_0 = new Redis({ port: 6379, // Redis port host: '127.0.0.1', // Redis host // family: 4, // 4 (IPv4) or 6 (IPv6) name: 'person', password: '', d原创 2022-03-02 14:51:45 · 1363 阅读 · 2 评论 -
nest 集成mysql typeorm 并实现数据迁移
前提假设本地的mysql环境安装完成1、 安装typeorm和mysql$ npm install --save @nestjs/typeorm typeorm mysql2 nestjs-config2、导入到AppModule中采用的是cofing的模式导入配置信息异步配置参考地址在src目录下创建config文件database.config.tsexport default { type: process.env.DB_TYPE, host: process.env.DB_原创 2022-03-02 14:45:54 · 2212 阅读 · 0 评论 -
nest 项目初始化及常规操作
nestjs文档参考地址本帖单纯记录自己安装本地开发环境的过程项目起步安装1、通过cli快速搭建项目$ npm i -g @nestjs/cli$ nest new project-name2、nest 快速创建对应文件夹的操作 nest --help显示Usage: nest <command> [options]Options: -v, --version Output the current ver原创 2022-03-02 14:15:19 · 1113 阅读 · 0 评论 -
nest QueryBuilder leftJoinAndMapOne、 leftJoinAndMapMany
leftJoinAndMapOne const userRolesQueryList = [ 'userRoles.userId = user.id', 'userRoles.isDel = 0', ] const userRolesCondition = userRolesQueryList.join(' AND '); // userRolesQueryList => "userRoles.userId = user.id AND userRoles.isDel =原创 2020-11-24 16:26:45 · 2632 阅读 · 0 评论 -
nest QueryBuilder
通过Entity Manager创建QueryBuilder创建QueryBuilder的方法有多种1、import { getManager } from "typeorm";const user = await getManager() .createQueryBuilder(UserEntity, "user") // 使用UserEntity 定义别名user .where("user.id = :id", { id: 1 }) // 查询条件 id: 1 .getOne();原创 2020-11-06 11:35:34 · 596 阅读 · 0 评论 -
nest authGuard 守卫做登录鉴权练习
修改用户的实体类 userEntity处理密码加密方式import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, BeforeInsert} from "typeorm"import NodeAuth from "node-auth0"import { Exclude, Expose } from "class-transformer" import * as jwt f原创 2020-09-25 14:06:04 · 1922 阅读 · 1 评论 -
nest exception filters异常过滤器练习
异常过滤器import { ArgumentsHost, Catch, ExceptionFilter } from "@nestjs/common"import { formatDate } from "src/utils"@Catch()export class HttpExceptionFilter implements ExceptionFilter { catch(exception: HttpException, host: ArgumentsHost) { const ctx原创 2020-09-19 11:38:48 · 961 阅读 · 1 评论 -
nest transformer Expose Exclude 练习
使用在dto文件中给需要暴露的属性添加@Expose() @Exclude()例一You can expose what your getter or method return by setting a @Expose() decorator to those getters or methods通过为getter或方法设置@expose()修饰符,可以公开getter或方法返回的内容import { Expose } from "class-transformer"export c原创 2020-09-19 11:09:10 · 1152 阅读 · 1 评论 -
nest interceptor 拦截器(统一数据返回格式)练习
import { CallHandler, ExecutionContext, Injecable, NestInterceptor } from "@nestjs/common"import { Observable } from "rxjs"import { map } from "rxjs/operators"import { classToPlain } from "class-transformer"@Injectable()export class TransformIntercep原创 2020-09-19 10:11:09 · 1411 阅读 · 1 评论 -
nest pipes自定义管道练习
custom pipesimport { PipeTransform, Injectable, ArgumentMetadata } from "@nestjs/common"// ArgumentMetadata类型定义export interface ArgumentMetadata { type: 'body' | 'query' | 'param' | 'custom'; metatype?: Type<unknown>; data?: string;}@Inj原创 2020-09-19 10:02:10 · 497 阅读 · 1 评论 -
nest guards 守卫练习
HINTGuards are executed after each middleware, but before any interceptor or pipe.守卫在每个中间件之后执行,但在任何拦截器或管道之前执行。import { Injectable, CanActivate, ExecutionContext } from "@nestjs/common"import { Observable } from "rxjs"@Injectable()export class Aut..原创 2020-09-17 15:53:16 · 421 阅读 · 0 评论 -
nest interceptors 拦截器练习
拦截器有一组有用的功能,这些功能是受面向方面编程(AOP)技术启发的。它们可以:执行前/执行后附加逻辑方法转换函数返回的结果转换从函数引发的异常扩展基本函数行为根据特定条件完全重写函数(例如,出于缓存目的)import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from "@nestjs/common"import { Observable } from "rxjs"import { tap } fro.原创 2020-09-17 15:33:10 · 939 阅读 · 2 评论 -
nest middleware 中间件练习
写一个中间件(middleware),在需要模块中注入可全局注入 app.use 可在模块中单独加入,根据路由编写exclue和forRoutesclass middlewareimport { Injectable, NestMiddleware, Request, Response } from "@nestjs/common"// import { Request, Response } from "express"// 如果Request Response 是从express中引入的.原创 2020-09-17 15:08:44 · 411 阅读 · 0 评论 -
nest find 练习(未实践)
import { createConnection, Not, LessThan, LessThanOrEqual, MoreThan, MoreThanOrEqual, Equal, Like, Between, In, getManager, EntityManager, Repository} from "typeorm"import { User } from "./entity/User"原创 2020-09-14 17:12:12 · 608 阅读 · 1 评论 -
nest mysql 表关联操作练习
内容: 用户(User)、角色(Role)、帖子(Post)一个用户可以有多个角色,多个帖子一个角色可以有多个用户目前思路:模块 用户、角色、用户角色、用户帖子 不使用外键 建了两个中间表UserServiceimport { Injectable } from '@nestjs/common';import { InjectRepository } from '@nestjs/typeorm';import { Repository, getManager, EntityManager .原创 2020-09-13 22:22:20 · 558 阅读 · 0 评论 -
nest typeorm 事物操作练习
方式三 在控制层中使用装饰器UserController@Post()@Transaction()async create( @Body() data: { [key: string]: any }, @TransactionManager() entityManager: EntityManager) { return this.userService.create(data, entityManager)}在控制层中获取manager传给serviceUserServiceas原创 2020-09-11 17:14:35 · 249 阅读 · 0 评论 -
nest typeorm 事物操作练习
方式二 显式 commit rollbackUserController@Post()async create( @Body() data: { [key: string]: any }) { return this.userService.create(data)}UserService通过getConnection()建立连接通过connection.createQueryRunner获取运行器通过queryRunner.connect()建立连接通过queryRunner.s原创 2020-09-11 17:06:52 · 273 阅读 · 0 评论 -
nest typeorm 事物操作练习
方式一 隐式 commit rollbackUserController@Post()async create(@Body() data: Extract<CreateUserDto, CreateUserExtendDto>): Promise<UserEntity> { return this.userService.create(data)}UserService通过getManager().transaction获取entityManager再对目标en原创 2020-09-11 15:46:39 · 174 阅读 · 0 评论 -
nest typeorm mysql 练习
编写数据层、控制层、服务层、模块层在模块层中引入 数据层、 控制层、 服务层在服务层中引入 数据层 使用 增删改查 处理数据在控制层中引入 服务层 实现功能UserEntityimport { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn} from "typeorm"// 装饰器 将类模型转换成数据库表@Entity({ name: "user" })export c..原创 2020-09-11 14:39:30 · 264 阅读 · 0 评论 -
nest QueryBuilder
使用 connection 创建一createConnection().then(async (connection) => { const user = connection.getRepository() .createQueryBuilder() // 需要选择查询的字段,如果想要全部查询可以不加select .select(["user.id", "user.username"]) // 从哪张表, 并且定义别名为user .from(User, "user")原创 2020-09-08 15:58:20 · 800 阅读 · 1 评论 -
nest mysql find练习
import { createConnection, Not, LessThan, LessThanOrEqual, MoreThan, MoreThanOrEqual, Equal, Like, Between, In} from "typeorm"import { User } from "./entity/User"createConnection() .then(async (connection) =原创 2020-09-07 23:23:28 · 225 阅读 · 0 评论 -
nest mysql多对多练习
Tagsimport { Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable} from "typeorm"import { Posts } from "./Posts"@Entity({ name: "tags" })export class Tags { @PrimaryGeneratedColumn({ type: "int", name:原创 2020-09-07 22:25:01 · 208 阅读 · 0 评论 -
nest mysql一对多练习
Userimport { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, OneToOne, OneToMany} from "typeorm";import {UserExtend} from "./UserExtend"import {Posts} from "./Posts"@Entity({ name: 'user' })exp原创 2020-09-07 21:56:54 · 301 阅读 · 0 评论 -
nest mysql一对一练习
User@Entity({ name: "user"})export class User { @PrimaryGeneratedColumn({ type: "int", name: "id", comment: "主键id" }) id: number; @Column({ type: "varchar", nullable: false, length: 50, unique: true, name: "username", default: "张三"原创 2020-09-07 21:09:57 · 201 阅读 · 0 评论 -
nest入门day1
关于nest项目架构我们可以在项目中定义很多控制层客户端(浏览器、移动设备)发送http请求,根据url匹配的原则,到对应的控制器控制器继续访问到服务层服务层对接数据层,然后对数据进行增删改查基础项目的解释1、 目录结构├── app.controller.spec.ts # 测试文件├── app.controller.ts # 控制器├── app.module.ts # 主模块├── app.service.ts # 服务层└── main.ts # 入口文件2原创 2020-08-30 22:41:21 · 347 阅读 · 0 评论
分享