Nestjs框架: 数据库架构设计与 NestJS 多 ORM 动态数据库应用与连接池的配置

Nestjs框架: 基于权限的精细化权限控制方案与 CASL 在 Node.js 中的应用实践 本文介绍了在现代Web应用中实现细粒度权限控制的方案,重点对比了RBAC(基于角色的权限控制)和ABAC(基于属性的权限控制)的优缺点。针对RBAC在复杂权限管理中的局限性,推荐使用Casl这一JavaScript权限控制库,它支持字段级、条件性权限控制,具有同构设计、类型安全、可序列化等技术优势。文章详细讲解了Casl的核心概念、使用流程,并提供了与Quokka.js工具结合的调试示例。相比其他权限库,Casl在ABAC实现、生态支持等方面表现突出,是构建复杂权限系统的理想选择。 阅读详情

数据库架构设计与多ORM动态数据库库的使用


1 ) 概述

  • 我们现在请求一个接口,比如:/api/getUsers , 在这里设置了一个 Headers
  • 里面有一个叫 x-tenant-id,这是一个标识,默认值是 default,还可以是 default2 或 default3
  • 每次修改这个请求头,响应都不同

2 )架构1

  • 从请求侧发送不同参数到我们的 ORM 库,ORM 库连接到数据库,数据库侧响应回前端不同的数据。
  • 可能其中没有 ORM 库,只是服务端发送不同场景
  • 但实际上这是最简单的业务场景,我们现在做的是在此基础上的扩展
  • 有时候,一个数据库会遇到很多问题,比如硬件限制、单库数据集中、安全性不高、扩展性和安全性有问题等,这种架构明显不符合常见应用场景。
  • 常见场景可能右侧有两个数据库,一个主数据库负责写,一个从数据库负责读,或者有数据库前置中间件,如 Redis 增加数据库读性能,也可以用 Redis 做队列或专门的队列工具中间件往数据库写数据,以提升整个应用系统性能

3 ) 架构2

  • 系统架构是针对具体业务应用场景和系统环节做的升级或扩展,架构师要考量整个系统的可扩展性
  • 如果原先写代码没使用 ORM 库,后续扩展成多数据库应用场景,之前的驱动就无法对接后面的数据库,之前写的 SQL 查询和业务都会受干扰,调整成本很高
  • 而架构师选定中间的 ORM 库方案后,后续即使有多个数据库,都可通过一个 ORM 库的模型对接不同数据库,生成不同表格结构
  • 但后续可能会有数据库成本和数据库维护的成本问题,这种业务场景通常能覆盖大多数小伙伴的应用场景
  • 当前架构应用的前提是架构1中的单库场景不满足安全性和可扩展性需求,进入生产阶段,通常会在同一种数据库类型上扩展
  • 多数据库应用场景可能是用户要求,也可能是原数据库在特定业务场景下性能达不到要求,需要特定数据库的插件或功能。例如,关系型数据库适合业务系统,非关系型数据库适合存储小图片、二进制数据;消息应用场景中频繁产生系统消息时,用 MongoDB 存储数据很方便
  • 这种架构在安全性方面解决了单库的一些列问题,同时扩展性也非常好,但是也有一些问题
    • 一是多样性管理问题,不同数据库使用 ORM 库操作时,代码书写形式可能不同,需要加一层来操作不同数据库
    • 二是迁移复杂性问题,单数据库升级可直接创建 migration,多数据库时,不同数据库的 SQL 语句和语法不同,不能随便创建 migration,因为不同数据库sql语句和语法可能是不一样的
    • 三是配置问题,不同用户要求存放数据库的位置可能不同
  • 多数据库对接有逻辑隔离和物理隔离两种方式
    • 逻辑隔离可能将 tanant1 和 tanant2 存放在同一个数据库,比如都是做订单的
    • 物理隔离则是将两者存放在不同的数据库,保证了用户数据的安全性和完整性,后续还可进行读写分离和扩展
  • 选择物理隔离还是逻辑隔离,要从安全性和资源利用率方面考量

4 ) 架构3

  • 与之前的架构图相比,中间变得复杂,采用多 ORM 库对接多种数据库,是因为单一 ORM 库对接数据库有问题、有瓶颈和版本限制
  • 但绝大多数应用场景可能用不到多 ORM 库,通常是一个 ORM 库对接多个数据库
  • 当数据库是动态的,即用户提供数据库配置,程序要与用户侧数据库对接时,就可能用到当前架构
  • 合理做法是根据不同数据库连接指定不同 ORM 实例,创建对应连接来操作数据库

5 )架构4

  • 还可结合微服务,不同微服务对接不同数据库
  • 如设计一个网关层对接后面的微服务,网关层根据默认数据库存储的用户数据库配置信息
  • 选择不同微服务加载对应数据库的数据,每个微服务基本上是用到的一种ORM库,而非多种
  • 如果用户侧数据库连接信息固定,也可用配置文件存储, 比如调用一个配置中心 consul 或 nacos
  • 这样,可以把不同用户分配到不同微服务上去,调用不同的数据库
  • 后续还可以有一个服务中心,用于管理不同微服务的注册

架构选择

  • 在具体业务场景中,要根据自身情况选择架构
  • 比如简单商城服务,可选择扩展性好的架构;低代码项目,用户对数据隐私敏感,适合当前架构
  • 如果出现安全、性能、稳定性问题,可扩展相对薄弱的部分,如网关承载能力不足就扩展网关做负载均衡,ORM 库受限就扩展 ORM,数据库写性能受限就扩展数据库分库分表等
  • 数据库架构设计和系统架构设计没那么复杂,关键是关注核心部分,很多人做不好架构设计可能是业务经验不足
  • 现在借助 AI 系统和大模型能力,我们可以更系统地了解不熟悉的领域,做业务技术选型和架构方案是个倒推过程,根据具体业务倒逼自己学习

多租户总结

  • 不同租户请求到不同数据库,使用不同 ORM 方案
  • 这里涉及一个类似网关层的部分,读取不同数据库配置连接信息,根据信息选择不同 ORM 连接数据库
  • 并且在服务器侧,针对同一个租户用户可创建一个连接池
  • 用户访问时,若连接已创建就直接使用,否则重新创建数据库连接

数据连接池及常见 ORM 库配置

  • 虽然 Node 是非阻塞 IO,我们可以借助 Node 的异步特性实现良好的性能
  • 但如果在服务端使用 Node 对接数据库层面,数据库是同步操作,并非异步数据库
  • 那么,如何让数据库利用本地服务器的多线程特性呢?很多服务器是多核的,多核意味着可以实现多线程
  • 我们可以利用本地的多核多线程特性,让数据库拥有一个连接池,连接池说白了就是有多个数据库连接实例
  • 我们通过 Node 操作这个连接池,就像同时有十条线路连接到数据库,这十条线路可以处理数据库的查询请求,并响应 Node 侧使用的 ORM 库

  • 需要注意的是,连接池并非越大越好,因为 CPU 的核数是一定的,而且每个实例都需要占用一定的内存,实际上,市面上现有的 ORM 库,包括数据库本身都支持连接池,所以我们无需单独维护连接池,只要设置一个属性,ORM 库就能实现数据库连接池的特性

1 )Typeorm 连接池

  • 文档:data-source-options/#common-data-source-options
  • 里面有一个属性叫 poolSize,设置最大连接池属性即可,无需再关注其他方面
  • 之后直接操作 ORM 就行,它会管理连接池,有自己的一套机制

2 ) Prisma 连接池

  • 文档: databases-connections/connection-pool
  • 文档中有句话提到“the query engine manages connection pool of database connections”,即查询引擎会自行管理整个连接池。当 Prisma Client 客户端首次连接到数据库时,会创建一个连接池
  • 可能通过两种方式出现
    • 一是进行具体的数据库查询或调用 $connect()
    • 二是首次进行查询(query)时,也会自动调用 connect
  • 关于连接池的配置,点击 connection-pool#connection-pool-size
    • 通常建议的连接池大小或数量是根据 CPU 的物理核数乘以二再加一
      • num_physical_cpus * 2 + 1
    • 比如数据库服务器的 CPU 是四核(这里指的是物理 CPU 核数,而非线程数)
    • 我们可以通过连接字符串传递一个叫 connectionLimit 的参数来配置连接池,非常方便
      datasource db {
        provider = "postgresql"
        url      = "postgresql://johndoe:mypassword@localhost:5432/mydb?connection_limit=5"
      }
      

3 ) Mongoose 连接池

  • 官网: connections

  • 点击下面的 connections.html#connection_pools

    // With object options
    mongoose.createConnection(uri, { maxPoolSize: 10 });
    
    // With connection string options
    const uri = 'mongodb://127.0.0.1:27017/test?maxPoolSize=10';
    mongoose.createConnection(uri);
    
    • 里面有个属性叫 maxPoolSize,可以很方便地进行设置
    • 也可以通过 URL 的方式设置 maxPoolSize 属性来设置连接池
  • 甚至在 Mongoose 的官方网站上,还介绍了多租户的连接方式 connections.html#multi-tenant-connections

  • 这是一篇专门的文章讲解如何 使用 Mongoose 对接多租户场景

  • 下面多租户的示例只是在当前链接上切换不同的数据库,是在当前的 27017 数据库上创建数据库,而非链接到不同端口或位置的数据库

    const express = require('express');
    const mongoose = require('mongoose');
    
    mongoose.connect('mongodb://127.0.0.1:27017/main');
    mongoose.set('debug', true);
    
    mongoose.model('User', mongoose.Schema({ name: String }));
    
    const app = express();
    
    app.get('/users/:tenantId', function(req, res) {
      const db = mongoose.connection.useDb(`tenant_${req.params.tenantId}`, {
        // `useCache` tells Mongoose to cache connections by database name, so
        // `mongoose.connection.useDb('foo', { useCache: true })` returns the
        // same reference each time.
        useCache: true
      });
      // Need to register models every time a new connection is created
      if (!db.models['User']) {
        db.model('User', mongoose.Schema({ name: String }));
      }
      console.log('Find users from', db.name);
      db.model('User').find().
        then(users => res.json({ users })).
        catch(err => res.status(500).json({ message: err.message }));
    });
    
    app.listen(3000);
    
  • 其实这个逻辑可以进一步丰富,我们可以重新调用 mongoose.connect,再使用 mongoose.model, 再去使用 mongoose.connection.useDb

  • 相当于链接到不同位置,然后将 mongoose.connect 的实例存储起来,根据不同用户(租户)连接到不同的主库上去

NestJS连接云数据库实战:TypeORM配置、连接池优化与排错 在Node.js后端开发中,NestJS作为模块化框架深受欢迎,而数据持久化是服务化的关键环节。ORM(对象关系映射)技术通过实体映射与数据源管理,大幅简化了数据库操作,TypeORM因其与NestJS的官方集成成为首选。连接云数据库时,开发者需关注环境变量配置、数据源异步初始化、连接池大小、SSL加密及时区设置等工程问题,这些细节直接影响服务的稳定性与安全性。本文从基础概念出发,逐步演示如何通过TypeORM将NestJS服务对接云MySQL,并给出常见连接错误的排查方法,帮助读者在生产级标准下完成数据落 阅读详情

相关推荐

Nest.js Sequelize ORM到数据库(MySQL & PostgreSQL)示例

深入研究这个NestJS Sequelize教程,学习如何在NestJS中使用Sequelize创建一个示例数据库连接到PostgreSQL、MySQL和SQLite。NestJS允许您使用Node.js和TypeScript创建开箱即用的应用程序架构。它与Sequelize模块集成得很好。这样,您可以在代码中创建模型,Sequelize ORM会处理使用SQL数据库(如MySQL和PostgreSQL)的数据库操作。

欧阳天涵的专栏 931

NodeJS-NestJS:理解ORM(Object Relational Mapping)

ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。总得来说,ORM的作用就是完成对象与关系型数据库的映射,封装底层与数据库的交互,并且很多都提供了强大的附加功能,比如持久化。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。1、提高了开发效率。

snow的博客 1696

Nestjs框架: 多租户与多数据库的架构设计与实现

本文介绍了在NestJS项目中实现多数据库对接的方案,重点解决多租户架构下的数据隔离与灵活切换需求。通过抽象层统一接口,结合TypeORM、Prisma和Mongoose三种ORM库,支持MySQL、PostgreSQL和MongoDB等多种数据库类型。方案采用外观模式+抽象工厂模式+策略模式,通过DatabaseModule集中管理数据库连接,根据租户ID动态切换不同数据库配置。文章详细阐述了环境变量设计、目录结构和模块实现,为复杂业务场景下的多数据库管理提供了可行方案。

Wang的专栏 1789

nestjs 优秀的ORM框架sequelize操作数据库

优秀的nestjs ORM框架比较--sequelize与typeorm 全网最新的使用ts的sequelize教程 TypeORM 是一个ORM框架,可以与 TS 和 JS(ES5,ES6,ES7,ES8)一起使用。 它的目标是始终支持最新的 JS 特性并提供额外的特性以帮助你开发任何使用数据库的应用程序 Sequelize 是一个基于 promise 的 Node.js ORM, 目前支持 Postgres, MySQL, MariaDB, SQLite 以及 Microsoft SQL Se

qq_38734862的博客 4795

别再让信号‘撞墙’了!手把手教你用嘉立创阻抗计算器搞定PCB高速线(附免费压层结构选择)

本文详细介绍了如何使用嘉立创阻抗计算器解决PCB高速线设计中的阻抗匹配问题,避免信号反射和传输损耗。通过免费压层结构选择和五步计算法,帮助工程师快速掌握USB3.0差分线等高速信号的设计技巧,提升PCB设计效率和信号质量。

weixin_30736301的博客 282

【UE 反射】反射的原理是什么?如何使用机制?

静态类型检查确保了类型的早期一致性和高效的代码执行,但减少了灵活性。动态类型检查提供了更大的灵活性,但增加了运行时的开销和潜在的错误。反射作为一种动态特性,无论是在静态类型语言还是动态类型语言中,都提供了强大的运行时类型操作能力,但也伴随着性能和安全性方面的权衡。通过理解这些联系,开发者可以在不同的编程语言和应用场景中选择适合的类型检查方式和反射机制,以实现所需的动态行为和灵活性,同时保证性能和安全性。

hhw_hhw的博客 6035

nest中的ORM

在 Nest.js 中执行 SQL 查询通常涉及使用 TypeORM 或 Sequelize 这样的 ORM(对象-关系映射)库。这些库使得在 Nest.js 应用程序中连接和操作 SQL 数据库变得更加简单和直观。在user模块中的service中;在user模块中的entites中;很明显没有使用sql语句,但是也完成了sql操作;

m0_47999208的博客 679

模拟滤波器的基础知识和设计

使用Python实现多种模拟滤波器

faltas的博客 3531

nestjs[连接mysql数据库]

nest.js 本身支持建议使用TypeORM 模块来处理数据库相关的操作,它为许多不同的数据库提供了支持,以 MySQL 为例,使用的官方的hello-world项目做示例。由于个人感觉没太大的必要将这个连接配置外置到一个文件中,因此这里不做说明,但是网上或者官网都有对应的操作方式,查阅即可。这里的操作中没有任何的sql查询,直接用了find()方法查询出了所有数据,可以参考typeorm中文官网。这里主要做了数据库连接配置TypeOrmModule.forRoot()以及子模块的加载注册。

墨水白云的博客 1万+

手把手教你用Docker快速部署ZLMediaKit流媒体服务器(含WebRTC配置)

本文详细介绍了如何使用Docker快速部署ZLMediaKit流媒体服务器,并配置WebRTC功能。通过容器化部署,实现环境一致性、资源隔离和快速扩展,同时提供WebRTC专项配置、多协议推拉流实战测试及生产环境优化建议,帮助开发者高效搭建企业级流媒体平台。

agile9scrum的博客 204

【技术科普】破解政务跨系统数据壁垒!亘川一网统管平台多源数据同步技术解析

本文解析亘川一网统管平台多源数据同步技术,针对政务跨系统数据壁垒难题,介绍组件的数据采集、校验、审计留痕等核心能力,结合营商环境项目落地案例,对比传统开发模式差异,讲解开源组件的实践价值,为政务项目开发者提供落地参考。

weixin_67440240的博客 637

第七部分:第四节 - 在 NestJS 应用中集成 MySQL (使用 TypeORM):结构化厨房的原材料管理系统

Repository 提供了常用的数据操作方法(查找、保存、删除等),以及 Query Builder 等更高级的查询工具。TypeORM 是一个功能强大的 ORM,支持多种数据库(MySQL, PostgreSQL, SQLite, MongoDB 等),并且对 TypeScript 和 JavaScriptES6+/ES7+ 有很好的支持,与 NestJS 集成非常方便。在 Service 中,通过依赖注入获取对应实体的 Repository 实例,然后使用 Repository 的方法进行数据操作。

低代码布道师的博客 1469

上位机 寻边器 通讯实战

寻边器通讯接口实现 本文介绍了上位机与盖泽(Gazer)和JEL品牌寻边器的通讯接口实现方案。主要内容包括: 接口定义:创建了IAlignerOperation接口,定义了获取状态、控制运动、真空吸附等核心功能。 具体实现: 盖泽寻边器(GazerAlignerCjh):通过串口通讯,实现了回零、校准、移动位置等操作 JEL寻边器(JelAligner):同样基于串口通讯,包含错误处理、状态查询等功能 工厂模式:通过AlignerFactory工厂类根据设备品牌创建对应的实现对象。 设备加载:展示了如何在系

StevenChen的博客 380

Nestjs框架配TaoToken:数据库多选、单库与多库的配置骨架与验证

NestJS 数据库选型别纠结,本文用 config.toml 与 settings.json 对照给出单库配置骨架,再演示多库连接命名与读写分离验证,并统一 TaoToken Key 通道,避免配置散落。完整代码可直接抄,官网见 https://taotoken.net/?utm_source=taotoken_aicg_blog_end

weixin_35752645的博客 8

Android功耗系列专题理论之六:外设功耗问题分析方法

本文介绍了移动设备功耗问题的分析方法,重点针对传感器和GPU两大模块。传感器部分详细讲解了通过ADB命令获取日志、状态差异分析和单传感器隔离测试的排查方法,并给出优化建议。GPU部分从基础功耗测量、场景测试到功能模块拆解进行多维度分析。同时阐述了GNSS/GPS功耗的测试方法,包括前后台对比、星座双频拆解及SAP/DPO等特殊功能的电流分析,为移动设备功耗优化提供系统性的诊断思路。

375

5.1 rocr-runtime libhsakmt event 机制全景—从 Doorbell 到 Signal

本文介绍了ROCm/KFD中的Event机制架构,主要解决GPU异步计算中的反馈问题。Event机制分为三层:硬件层触发事件,内核层管理事件通知,用户态接收处理。事件类型分为三大类:同步类事件(如SIGNAL、QUEUE_EVENT)用于任务完成通知,异常类事件(如MEMORY、HW_EXCEPTION)报告错误,拓扑类事件(如NODECHANGE)处理设备变更。该机制通过共享内存和中断实现高效通信,避免CPU轮询开销。后续文章将深入内核实现、Thunk层封装和多队列完成检测实战。

图形/计算GPU的驱动与虚拟化技术分享园地 1308

NestJS学习记录-TypeOrm

它的目标是始终支持最新的 JavaScript 特性并提供额外的特性以帮助你开发任何使用数据库的(不管是只有几张表的小型应用还是拥有多数据库的大型企业应用)应用程序。上面动态模块引入时,logging:true,可以打开,打开以后我们执行sql,在我们控制台就可以看到执行的sql语句。4、此时我们在user.entity.ts文件中加入一些字段,注意这个就是我们的实体类,对应数据库中的表。可以看到我们只获取到id==2的用户,因为我们获取所有用户的时候过滤掉了已经删除的用户。

weixin_39179366的博客 1385

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

使用 NestJS 与 Prisma ORM 构建 REST API 的完整实战指南(基于 Prisma Postgres)

本篇指南以仓库中的 [orm/nest](https://link.gitcode.com/i/c885323446970d6a35dc4fc7f0615d6e) 示例为蓝本,完整讲解如何用 **NestJS + Prisma ORM + Prisma Postgres** 从零搭建并运行一个可用的 REST API:包括项目拉取、数据库创建与迁移、driver adapter 配置、种子数据注入

gitblog_00534的博客 259

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

NestJS 多租户数据库连接如何优雅透传?nestjs-cls 实战多租户上下文存储

在 NestJS 多租户应用中,让每个请求"记住"自己属于哪个租户、使用哪个数据库连接,往往是架构里最头疼的一环。这篇文章带你使用 **nestjs-cls**(一个兼容 NestJS 依赖注入的**异步上下文存储**模块)实现多租户数据库连接的优雅透传:请求进来时存入租户标识,业务层任何位置都能无感获取当前租户的连接,不再需要在每个方法里层层手动传参。 --- ## 多租户数据库连接的三大痛

gitblog_00452的博客 633

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

在 NestJS 中集成 MikroORM:模块化配置、请求上下文与多数据库实战指南

本篇指南以 `@mikro-orm/nestjs` 模块为核心,系统讲解如何在 NestJS 应用中完成 MikroORM 的安装、模块化配置、实体定义、Repository 注入、请求上下文管理、多数据库连接、序列化与测试等完整实战流程。读完本文,你将掌握 `MikroOrmModule.forRoot()`/`forFeature()` 的用法、`@InjectRepository()` 与自

gitblog_01012的博客 901

NestJS-Prisma多数据库连接方案:CustomPrismaModule使用详解

在现代企业级应用开发中,多数据库连接已成为常见需求。NestJS作为高效的Node.js后端框架,结合Prisma这一强大的ORM工具,为开发者提供了优雅的数据访问层解决方案。本文将详细介绍如何通过`CustomPrismaModule`实现NestJS应用中的多数据库连接,帮助开发者轻松应对复杂的数据存储场景。 ## 核心概念:什么是CustomPrismaModule? `CustomPr

gitblog_00581的博客 1013

NestJS 深入浅出

NestJS是一个基于TypeScript的Node.js框架,借鉴Spring框架的工程思想,旨在解决Node.js的工程失控问题。它通过模块化架构(Module)、依赖注入(IoC/DI)、分层请求拦截(Middleware/Guard/Pipe/Interceptor)等机制,实现代码的稳定性、可扩展性和可维护性。核心成员包括承载业务逻辑的Provider、处理请求的Controller,以及模块边界管理、生命周期钩子等特性。NestJS特别适合构建大型企业级应用,提供清晰的架构边界和标准化开发模式。

青蛙king的博客 1238

NestJS-Prisma核心组件解析:PrismaModule与PrismaService使用技巧

NestJS-Prisma是一个为NestJS应用提供便捷Prisma支持的工具库,通过PrismaModule和PrismaService两大核心组件,让开发者能够轻松在NestJS项目中集成Prisma ORM功能。本文将详细解析这两个核心组件的使用方法和实用技巧,帮助新手快速上手。 ## 一、PrismaModule:模块化集成Prisma的核心 PrismaModule是NestJS-

gitblog_01109的博客 1153

NestJS 框架深度解析

NestJS 是一个基于 Node.js 的渐进式框架,专为构建高效、可扩展的服务器端应用程序而设计。其核心理念结合了 面向对象编程(OOP)、函数式编程(FP) 和 函数式响应式编程(FRP),同时支持 TypeScript 和纯 JavaScript 开发。

专注最新最热的AI知识学习,以实战方式总结心得。 1557

NestJS Throttler 开源项目教程

NestJS Throttler 开源项目教程 项目介绍 NestJS Throttler 是一个用于 NestJS 框架的限流插件,旨在帮助开发者限制应用程序中特定路由或服务的请求频率。通过设置限流规则,可以有效防止恶意攻击和滥用服务,确保系统的稳定性和安全性。 项目快速启动 安装 首先,确保你已经安装了 NestJS 框架。然后,通过 npm 安装 @nestjs/throttler 包: n...

gitblog_01109的博客 740

NestJS 入门(9):连上数据库,SQL 写在哪?

本篇主要讲解Nest.js如何连接数据库并在Service层进行数据操作。

weixin_43160044的博客 269
上一篇: Nestjs框架: 数据库多租户模式与动态模块初探
下一篇: Nestjs框架: 基于TypeORM的多租户功能集成和优化
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值