学习了koa中间键还有MySQL的一些简单用法,用来为后面的案例做铺垫

Koa框架

安装包,导出的是一个类,所以首字母大写 const Koa = require('koa')

koa通过创建的app对象,注册中间件只能通过use方法∶const app = Koa(); app.use();

Koa并没有提供methods的方式来注册中间件;也没有提供path中间件来匹配路径;也不可以连续注册

koa中路由的使用

安装库,koa-router。

const Router = require('koa-router')
const router = new Router({prefix:"/users"})//这里配置了后面就不需要再写/users
router.put('/',(ctx,next)=>{
    ctx.response.body = "user page"
})
//注册
app.use(srouter.routes())//路由里会有routes这个函数,注册这个函数
参数解析
  • ctx.request.url可以直接解析出来
  • ctx.request.params也可以直接解析出来
  • ctx.request.query 需要安装中间件解析,npm i koa-bodyparser,注册app.use(bodyParser());
    • 解析form-data里面的内容,用到koa-multer插件,放到了req.body里面;
    • 解析json/www-格式的可以直接解析,内容在response里面
数据响应

输出结果: body将响应主体设置为以下之一∶

  • string :字符串数据
  • Buffer : Buffer数据
  • Stream :流数据
  • object||Array:对象或者数组
  • null :不输出任何内容
    如果response.status尚未设置,Koa会自动将状态设置为200或204。

ctx.response里面的某些属性,比如status等,也可以直接ctx.status访问,因为有些属性源码里面做了代理,等于ctx.response.status

静态资源

引入npm i koa-static

koa和express对比

从架构设计上来说∶

  • express是完整和强大的,其中帮助我们内置了非常多好用的功能;
  • koa是简洁和自由的,它只包含最核心的功能,并不会对我们使用其他中间件进行任何的限制。甚至是在app中连最基本的get、post都没有给我们提供;
    我们需要通过自己或者路由来判断请求方式或者其他功能;

express和koa框架他们的核心其实都是中间件,它们的中间件的执行机制是不同的,特别是针对某个中间件中包含异步操作时:

  • express中的next()是个同步函数,所以说,如果里面有异步操作的时候,它是不会等待的。所以说处理异步操作有些乏力。
  • koa里面的next()返回值是个promise,所以可以加一个await变成同步,等到完成再返回。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TMBuEBYH-1650546571438)(E:\markdown\前端\csdn\20220421-1.png)]


MySQL

通常我们将数据划分成两类:关系型数据库和非关系型数据库:

  • 关系型数据库:MySQL、Oracle、DB2、SQL Server、Postgre SQL等;
    • 关系型数据库通常我们会创建很多个二维数据表;
    • 数据表之间相互关联起来,形成一对一、一对多、多对多等关系;
    • 之后可以利用SQL语句在多张表中查询我们所需的数据;
    • 支持事务,对数据的访问更加的安全;
  • 非关系型数据库:MongoDB、Redis、Memcached、HBse等;
    • 非关系型数据库的英文其实是Not only sQL,也简称为NoSQL ;
    • 相当而已非关系型数据库比较简单一些,存储数据也会更加自由(甚至我们可以直接将一个复杂的json对象直接塞入到数据库中)
    • NoSQL是基于Key-Value的对应关系,并且查询的过程中不需要经过SQL解析,所以性能更高;
    • NoSQL通常不支持事物,需要在自己的程序中来保证一些原子性的操作;

MySQL默认的数据库︰

  • infomation_schema:信息数据库,其中包括MySQL在维护的其他数据库、表.列、访问权限等信息
  • performance_schema :性能数据库,记录着MySQL Server数据库引擎在运行过程中的一些资源消耗相关的信息﹔
  • mysql:用于存储数据库管理者的用户信息、权限信息以及一些日志信息等;
  • sys∶相当于是一个简易版的performance_schema,将性能数据库中的数据汇总成更容易理解的形式;

一些指令:

  • 查看表 show tables

  • 从user表中查询username password:select username,password from my_db_001.users

  • 向表中插入数据。username为tony,password为12345:insert into my_db_001.users (username,password) values('tony' , '12345')

  • 把users表中id为4的用户密码更新为8888:UPDATE my_db_001.users set password='8888' where id=4

  • 把users表中id为2的用户密码更新为111,状态为1: UPDATE my_db_001.users set password='111',status=1 where id=2

  • 删除id为3的整行: DELETE FROM my_db_001.users where id=3

  • where子句的使用,限制查询条件

    • select * from my_db_001.users where status=1
      select * from my_db_001.users where id>2
      --username不等于tony
      select * from my_db_001.users where username<>'tony'
      --状态为0,且id<3
      select * from my_db_001.users where id<3 and status=0
      -- 状态为1,或name为tony
      select * from my_db_001.users where status=1 or username='tony'
      
  • 升序:select * from my_db_001.users order by status

  • 降序:select * from my_db_001.users order by status DESC

  • 先根据status进行降序排序,再根据name字母升序: select * from my_db_001.users order by status DESC, username asc

  • 用count()统计状态为0的用户数:select count() as total from my_db_001.users where status=0

der by status DESC, username asc`

  • 用count()统计状态为0的用户数:select count() as total from my_db_001.users where status=0

还有GUI工具、一对一、一对多、多对多操作等,在这里就不再赘述,这个公众号里面写的很清楚https://mp.weixin.qq.com/s/OcPKn78Wnj12jGwXLF_nwg,需要的话可以来看

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值