首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

做了一个Nest.js上手项目,很丑,但适合练手和收藏

,可以 Github 的 nest-todo 查看。...数据库模块 上面的 TodoService 里用到了数据库,那就来聊聊数据库模块。我这里的选型是 TypeORM + mariadb,为啥不用 mysql 呢?...我先给出这个项目的测试原则: 数据库操作不测,因为这个测试内容 TypeORM 能保证 API 的调用是 OK 的 简单实现不测,比如一个函数只有一行,那还测个 P 我只测一个模块,因为我懒,剩下大家自己看我那个模块测试就能学会了...我的 测试策略 不一定正确,只能说是我目前想到比较好的 测试策略 对 TodoService 进行测试,比较难的点是对 TypeOrm 的 Repository 进行 Mock,这玩意我自己搞了一整天才搞通...的测试,难点在于 Bearer Token 鉴权的获取,这玩意也同样搞了我一天时间: describe('TodoController (e2e)', () => { const typeOrmModule

4.6K40

做了一个Nest.js上手项目,很丑,但适合练手和收藏

,可以 Github 的 nest-todo 查看。...数据库模块 上面的 TodoService 里用到了数据库,那就来聊聊数据库模块。我这里的选型是 TypeORM + mariadb,为啥不用 mysql 呢?...我先给出这个项目的测试原则: 数据库操作不测,因为这个测试内容 TypeORM 能保证 API 的调用是 OK 的 简单实现不测,比如一个函数只有一行,那还测个 P 我只测一个模块,因为我懒,剩下大家自己看我那个模块测试就能学会了...我的 测试策略 不一定正确,只能说是我目前想到比较好的 测试策略 对 TodoService 进行测试,比较难的点是对 TypeOrm 的 Repository 进行 Mock,这玩意我自己搞了一整天才搞通...的测试,难点在于 Bearer Token 鉴权的获取,这玩意也同样搞了我一天时间: describe('TodoController (e2e)', () => { const typeOrmModule

3.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

Nest.js 快速入门:实现对 Mysql 单表的 CRUD

之后对对象的操作会通过 sql 同步数据库。...,我们只需要操作对象,Typeorm 就会自动去执行 sql 来把变动同步数据库。...@Param 是取路径的参数,@Query 是取查询字符串的参数。 @Body 是把请求参数设置对象的属性上,被用来传递数据的对象叫做 dto(data transfer object)。...我们引入 Typeorm 来做数据库的 CRUD。 在根模块引入用于数据库连接的 Module 在刚创建的模块引入实体对应的 Module: 创建笔记实体,用 @Entity 标识。...数据库一开始有两条记录: 通过查询接口能正确的查出来: 然后测试下修改接口: 数据库确实被修改了: 经过测试,对笔记单表的 CRUD 的功能正常。

4K30

使用NestJs、GraphQL、TypeORM搭建后端服务

在我们过去常用的RestFul API,我们可能在不同的业务需要调用同一个接口,但是各自所需的数据有不同的情况下,服务为了同时满足两个需求则提供了更多的字段,这样导致了一个两个业务请求的数据都包含了自己不需要的字段...后端开发同学应该都知道ORM的全称是对象关系映射(Object Relational Mapping,简称ORM)是通过使用描述对象和数据库之间映射的元数据,将面向对象语言程序的对象自动持久化关系数据库...项目,选择MySQL作为数据库 3.1、添加依赖,启动mysql服务 我们在src目录下创建一个modules文件夹,里面将会用来放置模块,这些模块将会被引入app.module.ts并且添加到imports...image.png 3.2、改造app.module.ts 从@nestjs/typeorm引入NestJs与TypeORM连接模块*TypeOrmModule,然后传入一个Object作为与数据库链接的...4.3、声明pokemon模块,并引入App 到目前为止,我们以及创建好了TypeORM的entity实体,TypeGraphQL的ObjectType,现在我们先声明PokemonModule import

6.5K10

Nest.js 实践总结

API 设置全局前缀 为 API 设置一个全局前缀可以区分接口版本,通常会用 /api/v1 作为的 API 端点的前缀。为什么我们需要前缀?好的 API 在设计时要考虑向后的兼容性。...模块划分 Nest.js 是以模块化结构为基础的,服务应用应该按功能职责被划分为几个部分,通常情况下,将你的目录结构应该按模块划分而不是按类型分成文件夹。...通过将文件组织模块文件夹,会变得清晰,并且可以避免很多错误。此外,如果你不遵守此原则,Nest.js 可能会在构建过程崩溃。 3. 使用 DTOs DTO = 数据传输对象。...数据映射器可能看起来有点冗长,但它是 / 大型项目的更好解决方案。它也非常适合测试,因为它适用于依赖注入! 5. 应该使用相对路径,而不是绝对路径 你可以使用绝对路径或相对路径导入 es6 模块。...使用 Exclude 来隐藏不必要的数据 使用过滤器从数据库获取的数据是很常见的。过滤器的整个目标是删除或格式化来自数据库的数据。这会导致很多垃圾逻辑,使代码变得更冗余。

1.7K20

NestJS、TypeORM 和 PostgreSQL 项目开发和数据库迁移完整示例(译)

TypeORM 的优点是:它可以让你通过代码来描述数据实体模型,然后能够应用和同步这些模型表结构的数据库。...Nest.js 连接数据库 就像所有事情一样,已经有一个 NPM 模块可以帮助您将 Nest.js 项目挂钩到您的数据库。...您可以像这样添加所需的模块: npm install --save @nestjs/typeorm typeorm pg 配置管理 我们可以在 Nest.js 配置 TypeORM 连接到哪个数据库服务器...npm run start:dev:db npm run start:dev 实际上我们的数据库并没有立即反映我们的数据模型,TypeORM 能够将您的数据模型同步数据库的表。...可测试性。...... 等等 因此,我们将添加一个 ItemDTO 响应类,该类将由数据库的项目实体填充。

6K21

Nest.js 实践总结分享

API 设置全局前缀 为 API 设置一个全局前缀可以区分接口版本,通常会用 /api/v1 作为的 API 端点的前缀。为什么我们需要前缀?好的 API 在设计时要考虑向后的兼容性。...模块划分 Nest.js 是以模块化结构为基础的,服务应用应该按功能职责被划分为几个部分,通常情况下,将你的目录结构应该按模块划分而不是按类型分成文件夹。...通过将文件组织模块文件夹,会变得清晰,并且可以避免很多错误。此外,如果你不遵守此原则,Nest.js 可能会在构建过程崩溃。 3. 使用 DTOs DTO = 数据传输对象。...数据映射器可能看起来有点冗长,但它是 / 大型项目的更好解决方案。它也非常适合测试,因为它适用于依赖注入! 5. 应该使用相对路径,而不是绝对路径 你可以使用绝对路径或相对路径导入 es6 模块。...使用 Exclude 来隐藏不必要的数据 使用过滤器从数据库获取的数据是很常见的。过滤器的整个目标是删除或格式化来自数据库的数据。这会导致很多垃圾逻辑,使代码变得更冗余。

1.9K10

NestJS、TypeORM 和 PostgreSQL 项目开发和数据库迁移完整示例(译)

TypeORM 的优点是:它可以让你通过代码来描述数据实体模型,然后能够应用和同步这些模型表结构的数据库。...Nest.js 连接数据库 就像所有事情一样,已经有一个 NPM 模块可以帮助您将 Nest.js 项目挂钩到您的数据库。...您可以像这样添加所需的模块: npm install --save @nestjs/typeorm typeorm pg 配置管理 我们可以在 Nest.js 配置 TypeORM 连接到哪个数据库服务器...npm run start:dev:db npm run start:dev 实际上我们的数据库并没有立即反映我们的数据模型,TypeORM 能够将您的数据模型同步数据库的表。...可测试性。...... 等等 因此,我们将添加一个 ItemDTO 响应类,该类将由数据库的项目实体填充。

5.3K30

NestJS、TypeORM 和 PostgreSQL 项目开发和数据库迁移完整示例(译)

TypeORM 的优点是:它可以让你通过代码来描述数据实体模型,然后能够应用和同步这些模型表结构的数据库。...Nest.js 连接数据库 就像所有事情一样,已经有一个 NPM 模块可以帮助您将 Nest.js 项目挂钩到您的数据库。...您可以像这样添加所需的模块: npm install --save @nestjs/typeorm typeorm pg 配置管理 我们可以在 Nest.js 配置 TypeORM 连接到哪个数据库服务器...npm run start:dev:db npm run start:dev 实际上我们的数据库并没有立即反映我们的数据模型,TypeORM 能够将您的数据模型同步数据库的表。...可测试性。...... 等等 因此,我们将添加一个 ItemDTO 响应类,该类将由数据库的项目实体填充。

5K10

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

文章主要包含以下内容: 初识 Nest.js Nest.js官网介绍: Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器应用程序的开发框架。...,向客户返回响应,将具体业务逻辑委托给providers处理; imports:导入模块的列表,如果需要使用其他模块的服务,需要通过这里导入; exports:导出服务的列表,供其他模块导入使用。...编写代码 写代码之前首先介绍几个nest-cli提供的几个有用的命令: //语法 nest g [文件类型] [文件名] [文件目录] 创建模块 nest g mo posts 创建一个 posts模块...TypeORM连接数据库 前置知识 首先,简单说一下什么是ORM?...接下来会先实现用户模块,然后在继续完善文章模块,涉及用户登录注册、实现,多表关联操作以及接口的单元测试

12.2K42

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

文章主要包含以下内容: 初识 Nest.js Nest.js官网介绍: Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器应用程序的开发框架。...,向客户返回响应,将具体业务逻辑委托给providers处理; imports:导入模块的列表,如果需要使用其他模块的服务,需要通过这里导入; exports:导出服务的列表,供其他模块导入使用。...TypeORM连接数据库 前置知识 首先,简单说一下什么是ORM?..., 你随便折腾, 但是你数据库中有数据的童鞋, 建议一定要谨慎点, 连接数据库时, 上来先把synchronize:false设置上, 保命要紧 这里我们就实现了简单的数据库增删改查操作, 是不是很简单...接下来会先实现用户模块,然后在继续完善文章模块,涉及用户登录注册、实现,多表关联操作以及接口的单元测试

9.3K11

写在 2021: 值得关注学习的前端框架和工具库

整体的感受非常舒服: 模块划分,我本人非常喜欢模块化的思想(个人认为React的是组件化而不是模块化),各个模块完全自己干自己的,不管是多级路由还是复杂数据流都显得结构清晰。...GraphQL-Code-Generator[48],很强大的工具,从.graphql文件语言可以直接使用的方法/类型定义,这个思想实际上各个语言都有,Dart和Ruby等。...在TS这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了...Monorepo Nx[77],我在用这个作为业务项目的Monorepo管理,目前感觉都挺好,尤其是Angular + Nest项目,基于后端的GraphQL Schema生成TypeScript的类型定义和函数...E2E测试:Cypress[94] / PlayWright[95],说实话很少能看到业务项目有完备的单元测试和集成测试,更不要说E2E测试了,因为的确要花不少时间。

4.2K10

Nest.js 框架实战之认识与搭建(一)

安装教程 Git 安装教程 相关技术栈 TypeScrip:JavaScript 类型的超集; Redis 数据库:跨平台非关系型数据库; MySQL 数据库:关系型数据库系统; TypeORM:对象关系映射器...注意:Nest 的所有特性都与代码组织模式无关。不同的组织模式唯一影响是如何组合项目以及如何生成构建构件,所有其他功能,从 CLI 核心模块再到附加模块,在任何一种模式下都是相同的。 2....package.json tsconfig.json tslint.json 复制代码 Nest 库它不能独立运行,因此必须将库导入包含它的应用程序才能执行它的代码。...my-library.module.ts │ │── lib.service.spec.ts │ └── index.ts └── tsconfig.lib.json 复制代码 在库模块我们只需要引入项目中的根模块即可使用...【汽车组装演示系统】这个项目的服务系统其实将前台服务和后台服务独立分开进行开发,同时共享了一些通用模块,比如:身份鉴权、日志模块数据库连接模块等等。

1.4K21

写在2021: 值得关注学习的前端框架和工具库

整体的感受非常舒服: 模块划分,我本人非常喜欢模块化的思想(个人认为React的是组件化而不是模块化),各个模块完全自己干自己的,不管是多级路由还是复杂数据流都显得结构清晰。...GraphQL-Code-Generator,很强大的工具,从.graphql文件语言可以直接使用的方法/类型定义,这个思想实际上各个语言都有,Dart和Ruby等。...在TS这个工具的主要能力就是生成TS的类型定义,同时它的插件体系还提供了更多的额外能力,Apollo-Client的插件,让你可以直接使用封装好的的useXXXQuery等,前端连查询语句都不用写了...Monorepo Nx,我在用这个作为业务项目的Monorepo管理,目前感觉都挺好,尤其是Angular + Nest项目,基于后端的GraphQL Schema生成TypeScript的类型定义和函数...E2E测试:Cypress / PlayWright,说实话很少能看到业务项目有完备的单元测试和集成测试,更不要说E2E测试了,因为的确要花不少时间。

2.8K10

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

市面上成熟的框架, Nest.js, Midway.js 等可以 —— 这类框架功能都很强大,而且提供完善的工具链和生态,就算你不熟,通读他们的官方文档都能收获很多;本文**因工作内容缘故选用 Midway...这个问题比较好解决,市面上成熟的框架(Nest.js, Midway.js,Prisma.io 等)都提供了相应的脚手架工具,直接生成相应的服务代码结构,写代码既可靠又高效。...TypeORM 的使用 3.1 数据库连接 这里主要涉及修改 3 处地方。...const testResult = await databaseService.getConnection().query('SELECT 1+1'); logger.info('数据库连接测试...参考文章 ORM 实例教程:阮一峰教程,解释 ORM,通俗易懂 架构模式的 Active Record 和 Data Mapper 什么是 ActiveRecord 模式 typeorm数据库ORM框架中文文档

3.2K20
领券