
Node.js 后端开发
文章平均质量分 63
Node.js 后端开发
秀秀_heo
一个学习前端开发的大学生,博客为自己的学习笔记,仅供个人学习使用。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Node.js】使用ts-node运行ts文件时报错: TypeError: Unknown file extension “.ts“ for ts 文件
ts-node 默认支持 ts 文件的运行,所以大概率使我们 package.json 和 tsconfig.json 配置的问题。原创 2025-07-23 13:44:57 · 197 阅读 · 0 评论 -
【Node.js】概念、特点、应用场景
来源双越老师面试派。转载 2025-07-19 09:28:07 · 55 阅读 · 0 评论 -
【Node.js】文本与 pdf 的相互转换
添加一个时间戳来阻止浏览器继续使用缓存,以保证每次重新请求都可以渲染最新的pdf 文件数据。时,浏览器认为这是一个全新的资源(即使实际文件一样),所以会重新请求服务器,不会用缓存。),让浏览器下次访问同样的 URL 时直接用本地缓存,加快加载速度、减少服务器压力。主要使用 pdf-parse 这个库,直接识别提取我们 pdf 文件中的文字。中间件会自动为静态资源设置缓存相关的 HTTP 头(如。这样浏览器每次都会重新请求 PDF 文件。这是因为 Express 的。处理的,和接口响应头无关。原创 2025-07-08 22:52:36 · 722 阅读 · 0 评论 -
前端项目部署上线到 centos 并使用 pm2 管理
本地 hosts 文件:当我们输入网址,进行 DNS 解析的第一步先是去 本地 hosts 文件查找有没有对应关系,没有才开始正式的 DNS 解析。多个域名可以指向同一个服务器。原创 2024-08-10 17:35:46 · 810 阅读 · 0 评论 -
【Sequelize】关联模型和孤儿记录
• 单边定义会导致预加载失效。例如仅定义。原创 2025-04-15 22:26:59 · 716 阅读 · 0 评论 -
【Sequelize】迁移和种子
在 migrations 文件夹中创建了一个名字像 XXXXXXXXXXXXXX-create-user.js 的迁移文件.在 models 文件夹中创建了一个 user 模型文件;根据自己的情况做修改(比如中国时区需要+8):数据库连接配置(开发/测试/生产环境)使用事务添加字段,确保操作原子性。定义回滚操作(删除字段)(时间戳前缀保证执行顺序):按文件名时间戳顺序执行。原创 2025-04-12 21:43:18 · 944 阅读 · 0 评论 -
使用 Docker 运行 MySQL
如果没有正在运行的容器,该端口可能被机器上的非 Docker 进程使用。4.然后系统自动进行Windows命令处理,我们等待处理完成以后(大约等待一分钟),在最末处输入:Y,电脑自动重启,进行配置更新。安装 docker desktop :https://www.docker.com/get-started/。2.桌面上,我们找到并右键点击【Hyper-V.cmd】文件图标,在右键菜单中点击:以管理员身份运行。3.然后弹出一个 用户帐户控制 - Windows命令处理程序 对话框,我们点击:是。原创 2025-04-12 20:06:19 · 986 阅读 · 0 评论 -
【Nest】swagger 接口文档
通过这些配置,Swagger UI 会自动在每个请求中添加 Authorization 头,并允许用户输入 JWT Token。name: ‘Authorization’:指定请求头的字段名为 Authorization。scheme: ‘bearer’:指定认证方案为 Bearer Token。in: ‘header’:指定 Token 位于 HTTP 请求头中。:在 Swagger UI 中直接测试需要 Token 的接口。:定义创建用户接口的请求体字段。:为创建用户的接口添加描述。原创 2025-03-06 16:49:34 · 665 阅读 · 0 评论 -
【Nest】自定义装饰器
•参数装饰器:用于从请求上下文中提取数据(如请求头、查询参数、用户信息)。•方法/类装饰器:结合元数据反射,定义路由的额外逻辑(如权限、日志记录)。目标:快速获取客户端语言偏好或设备类型。// 定义装饰器 accept-language.decorator.ts},使用方式// 根据语言返回本地化内容。原创 2025-03-06 16:38:57 · 577 阅读 · 0 评论 -
【Nest】守卫
这里是自定义的装饰器。身份认证:验证用户是否登录(如 JWT 校验)。权限控制:检查用户角色或权限是否满足条件。路由过滤:根据业务逻辑动态拦截请求(如 IP 黑名单)。原创 2025-03-06 16:27:09 · 426 阅读 · 0 评论 -
【Nest】管道
一旦注册,该管道会应用于所有的控制器和路由处理程序,而无需在每个地方单独配置。验证请求数据的有效性,确保数据符合预定义的 DTO(数据传输对象)规则。:将前端传递的可能是字符串类型的参数转换为整数,若转换失败则抛出异常。:将请求数据自动转换为目标类型(例如将字符串转换为数字)。:其他管道根据需要在特定路由或参数上使用,避免过度转换。:检查请求体中的必填字段、格式(如邮箱、密码强度等)。:验证参数是否为有效的 UUID 格式。:验证查询参数或路径参数是否合法。:将字符串参数转换为浮点数,类似。原创 2025-03-06 10:29:06 · 1072 阅读 · 0 评论 -
【Nest】全局响应拦截器和全局异常拦截器
user.controller.ts 测试。main.ts 中注册。main.ts 中注册。原创 2025-03-06 09:50:46 · 655 阅读 · 0 评论 -
【Nest】文件下载——普通下载和流式下载
或者可以直接使用 axios (里面有一个相应类型的配置),可以直接触发流式下载。,告知Axios将响应数据解析为二进制流。直接对服务端中的某个路径进行响应下载。原创 2025-03-06 09:04:17 · 475 阅读 · 0 评论 -
【Nest】图片(文件)上传
为避免文件名冲突,可通过以下方式生成唯一标识:•时间戳 + 随机数:如。•UUID:安装uuid${uuidv4${extnameimport {import {import {原创 2025-03-05 21:41:48 · 773 阅读 · 0 评论 -
【Nest】中间件
类型适用场景特点类中间件复杂逻辑、依赖注入支持模块化配置,可复用性高函数中间件简单逻辑、快速实现无需类结构,轻量级全局中间件跨路由统一处理(如日志)仅函数形式,需在入口文件配置第三方中间件跨域、限速等通用功能直接复用 Express 生态。原创 2025-03-05 16:31:36 · 442 阅读 · 0 评论 -
【Nest】session
记得安装下 express-session 和对应的类型定义库。原创 2025-03-05 11:33:18 · 242 阅读 · 0 评论 -
【Redis】详解 Redis
Redis是一种高性能的开源键值存储数据库,它支持各种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。Redis主要用于缓存、会话存储、消息队列等场景,以及用作数据库、应用程序的内存数据库。原创 2024-04-05 18:47:44 · 1550 阅读 · 2 评论 -
【Node.js】Koa2 整合接口文档
部分学习来源:https://blog.csdn.net/qq_38734862/article/details/107715579。原创 2025-01-30 22:08:23 · 908 阅读 · 0 评论 -
【Node.js】Common JS 和 ES Module 对于导出值的探究
特性CommonJSES Modules导出机制值的拷贝(原始值),引用拷贝(对象)动态绑定导入时机运行时(动态加载)编译时(静态加载)更新机制静态快照实时更新模块缓存是是用法require()因此,ESM 更适合处理动态绑定和模块间实时同步的场景。特性CommonJSES Modules加载方式同步加载异步加载语法require()importexport模块缓存模块首次加载时缓存模块首次加载时缓存模块作用域模块内有自己的作用域,this默认指向。原创 2025-01-08 18:22:20 · 1161 阅读 · 0 评论 -
【Nest】Module 模块
创建动态模块时,通常会使用forRoot或静态方法。这些方法允许在模块初始化时传入自定义配置,并根据配置生成 Providers。属性含义示例内容imports导入其他模块,使其功能可用UserModulePostModule注册模块中的控制器,处理 HTTP 请求providers注册模块中的提供者(服务),负责业务逻辑的实现。原创 2024-11-13 14:44:31 · 1070 阅读 · 0 评论 -
【Nest】Providers 提供者
定义一个服务类。在模块中将该服务注册为 Provider。在其他类中注入该服务类,以使用其提供的功能。在 NestJS 中,Providers 是创建、管理和注入服务、库的核心。通过使用装饰器、模块化管理和依赖注入,我们可以轻松创建可复用、易测试的服务层逻辑。同时,通过作用域和工厂模式,我们可以根据不同的场景和需求,灵活定义和配置 Providers,从而使应用更加灵活和模块化。原创 2024-11-13 14:20:04 · 884 阅读 · 0 评论 -
【Nest】常用装饰器
【代码】【Nest】常用装饰器。原创 2024-11-13 11:53:31 · 672 阅读 · 0 评论 -
【Nest】初识 Nest
【代码】【Nest】初识 Nest。原创 2024-11-13 11:38:25 · 199 阅读 · 0 评论 -
【Express】会话控制
HTTP 是一种无状态的协议,它没有办法区分多次的请求是否来自于同一个客户端,无法区分用户。原创 2023-11-08 09:26:28 · 161 阅读 · 0 评论 -
【Express】响应头
【代码】【Express】请求头和响应头。原创 2024-03-12 14:51:38 · 740 阅读 · 0 评论 -
【Express】创建防盗链中间件(HotLinking)
比如我们可以在 http://localhost:3000/assets/index.html 网站中获取某个图片,但是在 http://127.0.0.1:3000/assets/index.html 不可以获取,就是因为该网站设置了防盗链,而localhost 在白名单内。原创 2024-03-12 14:16:30 · 258 阅读 · 0 评论 -
【Express】express-jwt
通常可以使用 jwt 进行 token 的生成,使用 express-jwt 进行 token 的验证。express-jwt是对jsonwebtoken进行了封装,在验证策略方面做了很多扩展。原创 2024-03-24 14:50:52 · 434 阅读 · 1 评论 -
【Express】创建输出日志中间件(log4js)
【代码】【Express】创建输出日志中间件(log4js)原创 2024-03-12 13:32:43 · 706 阅读 · 0 评论 -
【Express】自定义错误码和通用返回对象
在 app.js 中引入使用。原创 2024-07-06 11:40:24 · 456 阅读 · 0 评论 -
【Node.js】worker_threads 多线程
尽管 JavaScript 是单线程的,但有时候在处理计算密集型任务或长时间运行的操作时,单线程的运行会导致主线程被阻塞,影响服务器性能。允许我们创建多个 Worker,但直接为每个任务创建一个新的 Worker 可能效率较低。模块允许我们在同一个进程内创建并运行多个线程,每个线程有自己的事件循环,但共享进程的内存空间。如果工作线程的事件循环为空(没有待处理的事件),Worker 会自动退出。在这个简单的示例中,我们创建了一个大小为 4 的线程池,任务可以通过。线程池会依次执行任务,并复用空闲的线程。原创 2024-10-04 18:07:19 · 2635 阅读 · 0 评论 -
【JavaScript】 线程和进程
当操作系统命令 CPU 去执行一个进程时,实际上是该进程的多个线程之间切换执行,主要是为了充分利用多核 CPU(比如线程数 === CPU 数,线程永不阻塞,没有 io,只存在大量运算)。此外,JS 最初是为了解决⽹⻚交互的问题⽽诞⽣的,⽽⽹⻚交互的需求⼤部分是基于⽤户事件的,⽐如点击按钮、输⼊⽂本等。比如在大文件上传过程中的 hash 计算部分,由于需要读取所有文件,依次将每一个分片计算 hash ,是 CPU 密集型应用,直接在主线程操作会造成页面卡顿,所以需要开启额外的 线程来计算 hash。原创 2024-07-23 21:45:01 · 883 阅读 · 0 评论 -
【Node.js】图片水印
根据业务需求自行更改操作,下面只讲最简单的给图片加水印。比如不再支持默认导入。原创 2024-10-04 17:29:07 · 931 阅读 · 0 评论 -
【Node.js】文件下载
用户可能安装了某些下载工具,这些下载工具在安装时,都会自动安装相应的浏览器插件,只要对下载地址稍作修改,就会触发浏览器使用插件进行下载,当然,不同插件的地址规则不同。这部分操作是由服务器完成的,和前端开发无关。此外,还有一些响应头。服务端在响应头中加入。原创 2024-05-25 10:30:46 · 1037 阅读 · 0 评论 -
fs-extra - 更优雅的处理文件
fs-extra的作用在于为 Node.js 提供更加丰富、方便的文件操作功能,减少开发者对文件系统操作的复杂性。它集成了许多实用功能,使得代码更加简洁、优雅,适合处理各种文件操作需求。原创 2024-10-02 18:36:04 · 908 阅读 · 0 评论 -
multer 和 multiparty 的区别
如果你只是需要简单的文件上传功能,推荐使用 multer,它更简单、性能更好,且直接与 Express 配合使用。如果你需要更灵活、更细粒度的控制,并且有复杂的表单解析需求,可以选择 multiparty,但相对使用起来更复杂。原创 2024-10-02 18:07:32 · 1075 阅读 · 0 评论 -
Webstorm 中对 Node.js 后端项目进行断点调试
首先,肯定需要有一个启动服务器的命令脚本。原创 2024-10-01 21:51:37 · 1388 阅读 · 0 评论 -
【Koa】文件上传
主要使用两个 koa 插件,koa-body 里面自带文件上传功能,还有一个 koa-staitc 用于配置静态资源目录(可以通过路径直接访问图片)。原创 2024-10-01 14:39:47 · 436 阅读 · 0 评论 -
使用 npkill 快速清理本地 node_modules 文件
npkill 可以直接在终端可视化的清除 本地 node_modules 文件夹,方便我们即使清除不常用的依赖。然后,我们选择不需要的 node_modules 按下空格即可删除。原创 2024-09-30 16:11:21 · 626 阅读 · 0 评论 -
【已解决】Koa 异步问题导致响应信息不能正确输出,始终为 Not Found
之前一直用的 express,习惯了回调的写法,最近开始写 koa,由于 koa 是基于 Promise ,所以整个过程都需要使用异步获取数据。比如查询数据库时,每一个中间件处等等,都需要使用 async / await。一旦,某个地方没有使用异步, koa 都会毫不讲理的返回 Not Found,不论在控制台调试的时候各个异步操作有没有正确输出数据。所以信息都正常打印。按道理来说可以响应体可以正常获取响应数据。但是,响应信息不能正确输出,始终为 Not Found。原创 2024-09-30 15:06:03 · 631 阅读 · 0 评论 -
【已解决】Argument `where` of type UserWhereUniqueInput needs at least one of `id` arguments Available op
这个问题是因为在Prisma中,findUnique方法要求在where对象中提供一个唯一标识符来定位特定的记录,这里我并没有再创建 model User 的时候提供这个唯一标识,所以不可以使用该方法查询。如果想通过username来查找用户,那么你需要在Prisma的数据模型中定义username为一个唯一的字段,并且确保没有两个用户有相同的用户名。还有一个问题,创建模型的时候可以使用大写,但是在之后的 prisma 操作模型时候,一律适用小驼峰,比如 VipUser -> vipUser。原创 2024-09-29 22:03:26 · 539 阅读 · 0 评论