node中间件就是封装在程序中处理http请求的功能。node中间件是在管道中执行。中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。

中间件为主要的逻辑业务所服务,可分为:应用级中间件、路由级中间件、内置中间件、第三方中间件、错误级中间件。

1、应用级中间件

每一个中间件就是调用一个函数,需要配合其他的中间件或者路由使用

server (函数) 拦截所有的路由

server.use('/reg',函数);拦截特定的路由

const express=require('express');
var server=express();
server.listen(3000);
//中间件拦截注册路由/reg
server.use('/reg',(req,res,next)=>{console.log('注册验证');next();
});server.use('/login',(req,res)=>{console.log('记录了日志');
})
server.get('/reg',(req,res,next)=>{res.send('注册成功');next();
});server.get('/login',(req,res)=>{res.send('登陆成功');
})

2、内置中间件

server.use(express.static('目录'))

把静态资源文件托管到某一个目录,如果浏览器请求静态资源,则自动到这个目录下查找

3、第三方中间件

(1)body-parser,将post请求数据解析为对象

const express = require('express');
//引入body-parser中间件
const bodyParser=require('body-parser');var server=express();
server.listen(3000);
// 托管静态资源到public
server.use(express.static('./public'));//使用body-parser中间件,将post请求的数据解析为对象
//extended是否要使用扩展qs模块解析为对象
//如果是false,不使用,而去使用querystring模块
server.use(bodyParser.urlencoded({extended:false}
))server.post('/mylogin',(req,res)=>{console.log(req.body);res.send('登陆成功');
})

(2)mysql模块

普通连接

//引入mysql模块
const mysql =require('mysql');
//1、普通连接
//1、1创建连接
var connection=mysql.createConnection({host:'127.0.0.1',port:'3306',user:'root',password:'1234',database:'tedu'
});
//1.2执行连接
connection.connect();
//执行sql语句
connection.query('select * from emp',(err,result)=>{if(err) throw err;console.log(result);
});
//关闭连接
connection.end();

连接池

const mysql=require('mysql');
//使用连接池
//创建连接池对象
var pool=mysql.createPool({host:'127.0.0.1',port:'3306',user:'root',password:'1234',database:'tedu',connectionLimit:20}
);
//执行sql语句
pool.query('select * from emp where eid=2',(err,result)=>{if(err) throw err;console.log(result);
})
const mysql=require('mysql');
var pool=mysql.createPool({'host':'127.0.0.1',port:'3306',user:'root',password:'1234',database:'tedu',connectionLimit:20
})
//使用占位符插入数据
// pool.query("insert into emp values(?,?,?,?,?,?)",[null,'yt','1','1995-12-24','9000','20'],(err,result)=>{
//     if(err) throw err;
//     console.log(result);
// });
//使用对象插入数据
// var emp={
//     eid:null,
//     ename:'html',
//     sex:1,
//     birthday:'1995-12-25',
//     salary:10000,
//     deptid:30
// }
// pool.query('insert into emp set ?',[emp],(err,result)=>{
//     if(err) throw err;
//     console.log(result);
// })
//使用占位符删除编号为10的数据
pool.query('delete  from emp where eid=?',[10],(err,result)=>{if(err) throw err;console.log(result);if(result.affectedRows>0){console.log('删除成功');}else{console.log('删除失败');}
})

node中间件有哪些类型?相关推荐

  1. node中间件是什么意思?

    node中间件是什么意思? 2020-09-11 16:11:17分类:常见问题 / Node.js答疑阅读(1757)评论(0) 中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不 ...

  2. vue+node全栈移动商城【10】注册页面传值到node中间件

    上一节咱们已经实现了注册页面的基本结构,在这一节,咱们把注册页面的值,传入到nodeJs的中间件中,为接下来的保存用户注册信息做好准备. 我们已经在vant的组件输入框上,以v-model的方式双向绑 ...

  3. node中间件mysql_nodejs 中使用mysql数据有没有类似 mongoose 的中间件?

    在nodejs 操作mysql 时 ,我遇到了这样的问题: 一次http请求需要执行多个query,所有为了减少callback 我使用async中的waterfall函数 将query分函数来写,并 ...

  4. node中间件KOA函数

    const Koa = require('koa'); const app = new Koa() //应用程序对象 中间件 // 发送HTTP KOA 接手HTTP //中间件(其实就是 函数) f ...

  5. Node中间件和路由器

    中间件(需要使用express) 本质上是一个函数,包含三个参数 request. response .next 作用 执行任何代码 修改请求和响应对象 终结请求-响应循环(让一次请求得到响应) 调用 ...

  6. 从原型链看DOM--Node类型

    前言: 本系列从原型,原型链,属性类型等方面下手学习了DOM文档对象模型,旨在弄清我们在DOM中常用的每一个属性和方法都清楚它从哪里来要到哪里做什么事,这样对于理解代码有一定启发.全靠自己在总结中摸索 ...

  7. node入门-学习笔记

    文章目录 node入门-学习笔记 node 启动node服务 重构express-run node入门-学习笔记 node 为什么后端要用node, 因为它是js js运行时环境 主要使用expres ...

  8. Nodejs基础中间件Connect

    从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Javascript引擎.chrome浏 ...

  9. 【详细教程】教你如何使用Node + Express + Typescript开发一个应用

    Express是nodejs开发中普遍使用的一个框架,下面要谈的是如何结合Typescript去使用. 目标 我们的目标是能够使用Typescript快速开发我们的应用程序,而最终我们的应用程序却是编 ...

最新文章

  1. C++中各种弹出对话框
  2. C/C++学习之路_七: 内存管理
  3. surefire单元测试 并发 提速
  4. python参数化_Python 中如何实现参数化测试的方法示例
  5. 与java线程有关的,线程多少和什么有关?大神们表示有话要说!
  6. DefaultMessageListenerContainer
  7. mysql创建数据库与表_PHP MySQL 创建数据库和表 之 Create
  8. mysql存储过程与触发器的例题
  9. 极化SAR数据超像素分割和密度峰值聚类
  10. MCP3421高精度ADC转换器
  11. Win10 + Ubuntu 安装教程(痛苦踩坑)
  12. Android 监听短信2种方式:Broadcast和ContentObserver
  13. 我国期货市场发展潜力和方向
  14. STM32的ETR引脚计数功能
  15. win10 nginx部署前端项目(静态资源服务器和HTML)
  16. 数字化门店| 奶茶店智慧管理系统
  17. 蓝凌LBPM平台,大公司流程数字化升级必选
  18. CDN,P2P,PCDN的区别?
  19. CMS是Content Management System的缩写,意为内容管理系统。
  20. 【GPT4】微软 GPT-4 测试报告(6)与人类的交互能力

热门文章

  1. 【领导力训练 一】初级教练的两个闭环
  2. https://www.makeapie.com打不开 Gallery打不开Gallery访问不到
  3. HTML5期末大作业:仿阴阳师游戏网站设计——仿阴阳师游戏官网首页(1页) 学生动手游页设计模板下载 网游大学生HTML网页制作作品 简单游戏网页设计成品 dreamweaver学生网站模板
  4. 数据库查找姓李的人_数据库中查询姓李的老师的个数
  5. C++文件流fstream详细说明
  6. 网络中链路复用的优缺点及交换机作用分析
  7. Windows 10 上的Yolo3环境安装与配置
  8. svn 忽略资源设置
  9. 限制IP访问页面--限制IP
  10. python中excel制作成绩报表,Python实现导出数据生成excel报表的方法示例