前言前面文章中通过客户端工具(MongoDB Shell、Robo 3T)连接 MongoDB 服务时,只要有 IP 地址和端口号,就能连接到数据库,之后就能操作数据库。这是因为默认安装的 MongoDB 没有启用身份验证,也没有设置初始用户名和密码。然而这会导致很多数据安全问题。MongoDB 提供了多种方式来提高数据库的安全性,例如身份验证、访问控制、加密等。本文主要介绍 MongoDB 提供
配置 TypeORM 连接到数据库时,有一个 synchronize 选项,意思是“同步”,也就是同步 TypeORM 实体和数据表,再详细讲就是根据实体自动创建和修改数据表结构,使其与 TypeORM 定义的实体类相匹配。以 Nest 中的使用为例:import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@n
日志日志用来记录程序的运行信息。开发服务端程序,必须集成日志管理的功能,一旦系统出现故障可以及时排查问题所在。日志一般分为:访问日志:记录系统的访问记录。运行日志:输出系统运行时的一些信息错误日志:记录系统出错的状态一般我们都是通过 nginx 做负载均衡,它具备了记录访问日志的功能。所以访问日志交给 Nginx 去做就好。在后端程序开发中,我们只需要关注运行日志和错误日志。Koa-loggerK
前言在 Linux 系统上安装软件有两种常用的方式。一种是通过包管理工具,直接安装;另一种是先下载源码,然后再手动编译,再安装。本文以 Git 为例,演示这两种安装软件的方式。使用 yum 安装Yum 是 CentOS 的包管理工具。使用前先更新下 Yum 源:yum update使用包管理器安装软件非常简单,直接一个命令就能进行安装:yum install git安装完成后看下版本信息:$ gi
前言本文将从零至一,介绍如何在云服务器上通过 Docker 容器运行一个简单的Node应用。本文假设读者已经掌握基本的Linux,Docker,Node,Express 知识。基本步骤本地写好nodejs应用,放到github。云服务器安装docker,配置国内镜像加速。拉取一个node镜像。从github拉取项目代码。编写Dockerfile文件,构建镜像。根据镜像运行一个容器。本地进行访问。具
前言上文介绍了如何理解依赖注入和控制反转,简单来说,控制反转是一种设计模式,可以将类与类的关系解耦,将人工维护转移给一个容器维护。要实现控制反转,依赖注入是一个常用方案,将依赖注册到 DI 容器中,哪里用到,就让容器将实例注入到哪里。Nest 中的依赖注入,主要就是围绕提供者(Provider)展开。所谓的依赖,指的就是提供者类。本文通过一个简单示例,来演示 Nest 中的依赖注入是如何工作的(不
前言Nest.js 是一个使用 TypeScript 实现的在 Node.js 环境中运行的 Web 服务开发框架。它借鉴了很多优秀的设计思想,本文来说一说 Nest 中的依赖注入和控制反转。依赖注入依赖注入,英文名是 Dependency Injection,简称 DI。什么是依赖注入?可以分开来看,就是“依赖”和“注入”。您可能想了,你这是在玩组词造句吗?也是,也不是。有时候将一个概念名词进行
前言上篇文章《Nest 核心概念:模块》中,我们介绍了 Nest 的模块,它是组织 Nest 应用的基本结构。Nest 应用接收请求,交给控制器处理请求,控制器中又调用服务,完成具体的业务逻辑,最后将结果响应给客户端。本文会详细介绍控制器的用法,其实就是通过各类装饰器处理不同的请求和传参。控制器控制器负责处理传入的请求,并向客户端返回响应。所发挥的作用就类似于 Express 或者 Koa 中的路
前言上篇文章《NestJS 扫盲篇:TypeScript 类和装饰器》中,我们介绍了 TS 中类和装饰器的用法。Nest 应用基于面向对象和面向切面开发,大量应用了类和装饰器。所以掌握这两个语法,再去学习 Nest,是一个很有必要的基础。MVC 分层架构在本系列更文的第一篇,较为细致的分析了 Hello World 的示例代码。它只有一个根模块,也就是 App 模块,然后使用控制器接收请求,再调用
前言先回顾下前文中介绍了哪些内容:使用 @nestjs/cli 创建和管理 Nest 应用Hello, World 示例代码分析Nest 基本概念:模块,控制器,服务常用的装饰器:@Module、@Controller、@Get、@InjectableNest 目录结构分析@nest/cli 脚手架的命令本文先不继续讲解 Nest 中的内容,而是打算介绍 TypeScript 中的两个语法:类和装
在正式使用 NestJS 进行开发之前,先来了解下 Nest 应用的目录结构,和一些常用的脚本命令。工程目录下面是使用 @nest/cli 创建的 Nest 项目的目录结构。上篇文章中介绍了 src 目录以及目录下各个文件的作用。下面是对其他目录和文件的说明:目录/文件说明test 目录存放测试文件.eslintrc.jsESLint 的配置文件.gitignore用来配置不需要被 Git 追踪的
初识 NestJS先来看下官网对 NestJS 的介绍。Nest (NestJS) 是一个用于构建高效、可扩展的 Node.js 服务器端应用程序的开发框架。它利用 JavaScript 的渐进增强的能力,使用并完全支持 TypeScript (仍然允许开发者使用纯 JavaScript 进行开发),并结合了 OOP (面向对象编程)、FP (函数式编程)和 FRP (函数响应式编程)。在底层,N
PassportPassport 是在 Node 的 Web 框架中使用的身份验证库。起初它专为 Express 设计,经过扩展之后,它可以在 Koa,Egg,Nest 等主流框架中使用。Passport 的设计类似于 Koa。Koa 只提供了核心的中间件机制和 HTTP 服务的创建,要处理请求,开发者需要自己导入第三方中间件模块,和自己手写处理请求的路由中间件。Passport 本身只提供验证机
在 HTTP 协议中,常见的请求方法有 GET、POST、PUT 、 PATCH 、Delete 等。从网络的本质来看,它们并没有什么区别。但是它们各自具备不同的语义化,分别用于不同的场景和目的。其中,POST 方法主要用于创建资源,PUT 方法用于更新资源,而 PATCH 方法则用于部分更新资源。PostPOST 方法是一种广义的方法,它可以用于创建新的资源,也可以用于更新已有的资源。当使用 P
前言前文详细介绍了 request 对象的用法,用来处理解析出客户端所传递的信息。完成一次完整的 HTTP 通信,还需要服务器进行响应,这就要用到 response 对象了。response 对象相对 request 对象来说,response 对象的用法就简单多了,主要就是设置状态码,响应头和响应给客户端的内容。状态码状态码(Status Code)表示此次请求的状态,是成功还是失败,是哪里有什
前言前文介绍了 http 模块的基本用法,主要就是调用 createServer 和 listen 方法来创建和启动服务。要处理具体的 HTTP 请求,就要在 createServer 方法中写点什么。本文来介绍处理请求的两个核心对象之一的 request 。URLHTTP 协议最早设计出来,仅仅为了获取网络上的某个 HTML 文档。随着后来的发展,网络上的资源越来越丰富,种类也从单一的文本发展
http 模块使用 Node.js 中创建 Web 服务,主要依赖内置的 http 模块。经典的 express.js、koa.js 框架都是以 http 模块为核心,进行的不同程度的封装。创建一个最简单的 Web 服务只需要几行代码。新建一个 index.js 文件,输入以下内容:// 1.导入 http 模块 const http = require('http'); // 2. 调用 cr
events 模块和发布订阅模式前言本文会介绍 events 模块的主要作用和使用方式,以及自己实现一个简单的发布订阅模式,帮助加深理解。events 模块文档地址,点击访问。Node.js 是基于事件驱动实现的异步操作。 事件驱动依赖就是的 events 模块。events 模块导出一个 EventEmitter 类,它是发布订阅模式的一种实现。无论你是了解发布订阅模式,
Buffer Stream fs 模块的关系。前言fs 模块是 Node.js 的内置模块,提供操作文件系统的能力,比如文件及目录的创建、写入及删除等操作。它是一个十分基础和有用的模块。Node.js 常用作 web 服务或者工具的开发,最依赖的就是 http 和 fs 模块。在 fs 模块中,所有的方法都分为同步和异步两种实现。在很久以前,node 还不支持 Promise 的时
前言计算机底层存储的数据都是二进制的。在前端开发中一般都是实现页面效果,很少会直接操作二进制的数据。而在 Node.js 擅长的领域,比如在服务端程序开发中,经常会读取文件,处理文件,和二进制数据打交道比较多。Buffer 对象是 Node.js 提供的一个全局对象,专门用来处理二进制数据。二进制数据在开发中,操作和表示都非常不方便,所以 Buffer 对象采用十六进制来表示二进制数据。比
前言上文讲解了 Node.js 的 CommonJS 规范,它主要用来解决模块化的问题。从本文开始将会介绍 Node.js 常用的模块,包括内置模块以及好用,好玩的第三方模块。本篇简单介绍下 path 模块的用法。path 模块path 模块提供了用来处理目录和文件路径的工具方法。目前主流的操作系统有 Windows,Mac OS 和 Linux。其中后两者都是类Unix系统,因此
CommonJS上文提到了 Node 采用的模块化规范是 CommonJS,它主要规定了如何定义模块,如果导出模块和如何导入模块:定义模块:一个文件就是一个模块导出模块:通过 module.exports 导出模块导入模块:通过 require 方法导入模块为了方便使用模块化,于是提供了几个全局的方法或对象,分别是:require:是一个方法,用来导入模块module:是一
在学习 Javascript 之初,会接触一个概念:JS 由三部分组成,DOM + BOM + ECMAScript。其中前两者是宿主环境,也就是浏览器所提供的能力。后者才是 JS 语言本身的标准。在上篇文章《Node.js入门(1):安装和简介》中,提到了 Node.js 本质是 JS 的一个运行时,所以学习 Node.js 时,除了我们已经掌握的 JS 基础功底,还要了解 Node.js 宿主
Node.js 快速安装访问 Node.js 官网,学习阶段建议下载最新的版本,直接点击下一步、下一步安装即可。放一些截图,说一些需要注意的地方。这些安装项都默认安装,分别是:安装项说明Node.js运行时执行代码的环境corepack manager一个新的工具,管理包管理器的工具npm package managernode.js 包的管理器Online document shorts
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号