首页
学习
活动
专区
圈层
工具
发布

一杯茶的时间,上手 Koa2 + MySQL 开发

而 TypeORM 则是通过装饰器[14]这种优雅的方式来将我们的 User 类映射到数据库中的表。...这里我们使用了三个装饰器: Entity 用于装饰整个类,使其变成一个数据库模型 Column 用于装饰类的某个属性,使其对应于数据库表中的一列,可提供一系列选项参数,例如我们给 password 设置了...这里我们将手把手带你学会如何在 Koa 框架中使用 JWT 鉴权,但是不会过多讲解其原理(可参考这篇文章[18]进行学习)。...所有请求都可以直接访问未受保护的路由,但是受保护的路由就放在 JWT 中间件的后面(或者从洋葱模型的角度看是“里面”),这样对于没有携带 JWT Token 的请求就直接返回,而不会继续传递下去。...实现自定义错误(异常) 首先,让我们来实现一些自定义的错误(或者异常,本文不作区分)类。

4.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    混搭 TypeScript + GraphQL + DI + Decorator 风格写 Node.js 应用

    本文着重讲解第二部分,即如何使用 TypeScript + Decorator + DI 风格编写 Node.js 应用,让你感受到使用这些技术框架带来的畅快感。...Active Records 模式最大优点是简单 , 直观, 一个类就包括了数据访问和业务逻辑,恰好我现在这个小应用基本都是单表操作,所以就用 Active Records 模式了。 3....,然后以如何创建一个 分页(Pagination) 功能为案例来演示在如何在 Midway 框架里使用 GraphQL,以及如何应用上述这些装饰器 。...案例:利用 GraphQL 实现分页功能 5.1 分页的数据结构 从使用者角度来,我们希望传递的参数只有两个 pageNo 和 pageSize ,比如我想访问第 2 页、每页返回 10 条内容,入参格式就是...到这里一个简单的 GraphQL 分页功能就开发完毕,从流程步骤来看,一路下来几乎都是装饰器语法,整个编写过程干净利落,很利于后期的扩展和维护。 6.

    4K20

    使用 NextJS 和 TailwindCSS 重构我的个人博客

    第一版:使用 Hexo 和 Github pages 优点:重新部署只要花5分钟,内容管理在本地 纯静态、免费; 缺点:依赖Github,国内访问困难; 第二版:React + Antd...,团队成员之间会存在样式冲突的可能,虽然我们可以使用 css modules 来避免,但却会存在取类名称的疲劳的问题,重复的类名称 -header,-body -container --wrapper等...Prisma 支持 Mysql、Postgresql 和 Sqlite, 访问官网我们可以很容易的上手,也可以快速的从老项目接入 虽然 Prisma 和 TypeORM 解决了类似的问题,但它们的工作方式却大相径庭...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...TypeORM Entity import { Entity, PrimaryGeneratedColumn, Column, OneToMany, ManyToOne } from 'typeorm'

    3.6K20

    短链服务?用 Nest 自己写一个

    这样访问短链的时候从数据库中查出对应的长链接,返回 302 重定向即可。 比如刚才的短链服务就是通过 302 把短链重定向到长链: 这里也可以用 301。...301 是永久重定向,就是重定向一次之后,下次浏览器就不会再访问短链,会直接访问长链接。 302 是临时重定向,下次访问短链依然会先访问短链服务,返回 302 后再重定向到长链。...short-url 先进入项目,把它跑起来: npm run start:dev 浏览器看到 hello world,代表 nest 服务跑成功了: 然后我们用 docker 把 mysql 跑起来: 从...安装用到的包: npm install --save @nestjs/typeorm typeorm mysql2 mysql2 是数据库驱动,typeorm 是我们用的 orm 框架,而 @nestjs...会自动建表: 表创建好了,接下来插入一些数据: nest g service unique-code --flat --no-spec 生成 service 类,--flat 是不生成目录 --no-spec

    93310

    kz-admin后台管理系统

    基于NestJs + TypeScript + TypeORM + Redis + MySql + Vben Admin编写的一款前后端分离的权限管理系统 演示地址:KzAdmin 管理员账号:admin...svg图片的文件夹 │ ├── components # 公共组件 │ ├── design # 样式文件 │ ├── directives # 指令 │ ├── enums # 枚举/常量...─ projectSetting.ts # 项目配置 │ │ └── siteSetting.ts # 站点配置 │ ├── store # 数据仓库 │ ├── utils # 工具类...─dto # 通用DTO定义 | |─contants | | |─error-code.contants.ts # 系统错误码定义 | | |─decorator.contants.ts # 装饰器常量...其他文档​ 你可以访问 https://admin.kuizuo.cn/swagger-ui 来查看kz-admin的Swagger文档 json格式为 https://admin.kuizuo.cn/

    2.5K20

    使用 NextJS 和 TailwindCSS 重构我的博客

    第一版:使用 Hexo 和 Github pages 优点:重新部署只要花 5 分钟,内容管理在本地 纯静态、免费; 缺点:依赖 Github,国内访问困难; 第二版:React + Antd + Mysql...,团队成员之间会存在样式冲突的可能,虽然我们可以使用 css modules 来避免,但却会存在取类名称的疲劳的问题,重复的类名称 -header,-body -container --wrapper等...Prisma 支持 Mysql、Postgresql 和 Sqlite, 访问官网我们可以很容易的上手,也可以快速的从老项目接入 虽然 Prisma 和 TypeORM 解决了类似的问题,但它们的工作方式却大相径庭...与 TypeORM 对比 TypeORM 是一种传统的 ORM,它将表映射到模型类。这些模型类可用于生成 SQL 迁移。然后,模型类的实例在运行时为应用程序的 CRUD 查询提供一个接口。...TypeORM Entity import { Entity, PrimaryGeneratedColumn, Column, OneToMany, ManyToOne } from 'typeorm'

    3.4K20

    「AI + 低代码」应用开发平台的后端模块系统

    每个模块都是一个用@Module()装饰器装饰的类,包含以下元数据:imports: 该模块依赖的其他模块controllers: HTTP请求处理器providers: 服务、仓库和其他可注入类exports...DailyServiceAgentModuleAI代理服务AgentServiceOpenModule公共API-根模块配置位于backend/src/app.module.ts的AppModule配置:ConfigModule: 从....TypeORM集成模式所有需要数据库访问的模块都使用TypeOrmModule.forFeature()模式:示例:订单模块OrderModule展示了TypeORM集成:导入TypeOrmModule.forFeature.../app.module';此模式允许消费者从模块目录导入:ts 体验AI代码助手 代码解读复制代码import { AppEntity, AppService, AppModule } from '....模式依赖注入:通过构造函数注入服务,通过@InjectRepository()注入仓库循环依赖:在需要时通过forwardRef()解决全局模块:UserModule标记为@Global()以实现全局访问桶式导出

    13510

    有了 Prisma,就别用 TypeORM 了

    本文面向的对象是饱受 TypeORM 折磨的资深用户(说的便是我自己)。只对这两个 ORM 框架从开发体验上进行对比,你也可以到 这里 查看 Prisma 官方对这两个 ORM 框架的对比。...文档&生态​ 从文档的细致程度上 Prisma 比 TypeORM 要清晰详尽。...findOne(undefined) 所查询到的却是第一条记录​ 首先 TypeORM 有个天坑,你可以在 这个 Issue 中查看详情或查看 这篇文章 是如何破解使用 TypeORM 的 Node.js...合理来说,Prisma 并不是一个传统的 ORM,它的工作原理并不是将表映射到编程语言中的模型类,为处理关系数据库提供了一种面向对象的方式。而是在 Prisma Schema 中定义模型。...从开发体验的角度不接受任何选择 TypeORM 的反驳,有了更优优秀的选择,便不愿意也不可能在回去了。如果你还未尝试过 Prisma,我强烈建议你亲身体验一番。

    5.1K22

    基于 Nest.js+TypeORM 实战,项目已开源,推荐!

    接下来探索一下如何用TypeORM创建一对一、一对多和多对多的关系。 一对一 一对一指的是表中一条数据仅关联另外一个表中的另一条数据。例如用户表和用户档案表, 一个用户只有一份档案。...我们在TypeORM中如何实现user表和info之间这种对一对的关系呢?...同样我们用代码看看TypeOrm中如何实现这种关系的: // category.entity.ts import {PostEntity} from "../.....处理多对多的方式是,将其转化为两个一对多的关系: 文章表 post 与 中间表 post_tag 一对多 标签表 tag 与中间表 post_tag 也是一对多 小结 前面我们学习了TypeORM 中是如何处理一对一...对上面代码实现进行简单分析: 为了获得路径设置的可访问角色,定义了@Roles装饰器, 并使用Reflector辅助类获取(它由框架提供, 并从@nestjs/core中导入) 因为授权之前首先需要对token

    12.5K41

    TypeORM用法浅析

    与传统数据访问技术的比较,orm通常会减少需要编写的代码量,但其高度的抽象模糊了代码实现中实际发生的逻辑。...本文以nestjs框架为例,nestjs和typeorm有着紧密的集成,提供了开箱即用的@nestjs/typeorm,更方便地进行数据库的连接,实体管理和依赖注入,详细可查看文档Database。...因为从源码层面来看,Repository 实际上是 EntityManager的一个封装,它内部持有对 EntityManager的引用,其背后是调用 EntityManager来完成实际的工作的。...true') .getMany(); console.log(res);}通过Repository方式使用,可以指定别名,也可以不指定,不指定时默认会使用实体的类名来进行数据的操作...通过EntityManager使用时,需指定操作的实体类,且必须指定别名。createQueryBuilder支持增删改查四种操作,最常用是查询操作,下面就几种查询场景进行介绍。

    1.6K21

    学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

    @Controller 如每一个要成为控制器的类,都需要借助@Controller装饰器的装饰,该装饰器可以传入一个路径参数,作为访问这个控制器的主路径: 对app.controller.ts文件进行修改...因为文章属于从零教程, 所以会包含数据库的安装、连接、使用以及使用过程遇到的坑,如果你是有经验的老手,可以跳过这部分。...数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。...现在就可以从API文档上直观的看到每个传参的含义、类型以及是否必传。到这一步并没有完, 虽然以及告诉别人怎么传, 但是一不小心传错了呢, 比如上面作者字段没传,会发生什么呢?...返回数据有很清晰了: 通过上边的学习,可以知道DTO本身是不存在任何验证功能, 但是我们可以借助class-validator来让DTO可以验证数据 总结 至此我们Nest.js快速上手入门就告一段落了,文章从项目如何搭建

    18.4K86

    学完这篇 Nest.js 实战,还没入门的来锤我!(长文预警)

    @Controller 如每一个要成为控制器的类,都需要借助@Controller装饰器的装饰,该装饰器可以传入一个路径参数,作为访问这个控制器的主路径: 对app.controller.ts文件进行修改...因为文章属于从零教程, 所以会包含数据库的安装、连接、使用以及使用过程遇到的坑,如果你是有经验的老手,可以跳过这部分。...数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。...现在就可以从API文档上直观的看到每个传参的含义、类型以及是否必传。到这一步并没有完, 虽然以及告诉别人怎么传, 但是一不小心传错了呢, 比如上面作者字段没传,会发生什么呢?...返回数据有很清晰了: 通过上边的学习,可以知道DTO本身是不存在任何验证功能, 但是我们可以借助class-validator来让DTO可以验证数据 总结 至此我们Nest.js快速上手入门就告一段落了,文章从项目如何搭建

    12.2K11

    GraphQL 实践与服务搭建

    事实上从 2012 年 Facebook 首次将 GraphQL 应用于移动应用,到 GraphQL 规范于 2015 年实现开源。...Code first 与 Schema first​ 在 nestjs 中有 Code first 与 Schema first 两种方式来生成上面的 Schema,从名字上来看,前者是优先定义代码会自动生成...在上面一开始的例子中是 Code First 方式,通常使用该方式即可,无需关心 Schema 是如何生成的。下文也会以 Code First 方式来编写 GraphQL 服务。...此外blog.entity.ts也不为数据库实体类,因此这里引入typeorm,并使用sqlite3 集成 Typeorm​ 安装依赖 pnpm install @nestjs/typeorm typeorm...至于如何选择,可以参阅官方 GraphQL 最佳实践,至于说有没有必要学 GraphQL,这篇文章 都快 2022 年了 GraphQL 还值得学吗 能给你答案。

    6.3K10

    2024年Node.js精选:50款工具库集锦,项目开发轻松上手(三)

    从为Web应用加固安全的Helmet,到简化数据验证的Ajv,再到推动JavaScript函数式编程的Ramda,这些库各有所长,却都指向同一个目标:让Node.js开发更加高效、安全且可维护。...减轻服务器负载:从服务器卸载实时处理任务,提升可扩展性和性能。 灵活的事件系统:支持多种事件类型和自定义事件命名,实现定制化交互。 跨平台兼容性:在各种浏览器和平台上运行良好,包括移动设备。...实时连接还需采取坚固的安全措施,防止未授权访问和数据泄露。此外,由于其异步特性,调试实时互动可能会带来挑战。...TypeORM的优点 TypeScript集成:与TypeScript无缝集成,提升类型安全和代码质量。 面向对象的方法:将数据库表视为类,记录视为对象,增强了代码的可读性和可维护性。...利用熟悉的面向对象范式,Sequelize使得开发者能够以简洁、直观的方式构建复杂的数据库交互,简化数据访问过程。

    1.8K10
    领券