美文网首页
node+mysql+koa

node+mysql+koa

作者: buffonme | 来源:发表于2021-04-26 18:09 被阅读0次

数据库

数据库介绍

一、数据库是存储、管理数据的仓库,它提供了对数据的检索、存储、多用户共享访问的能力,并且设法使数据的冗余度尽可能小。

二、数据库按照存储的数据模型,分为关系型数据库和非关系型数据库。

       关系型数据库:把复杂的数据结构归结为简单的二维表格形式,表格之间的数据关系通过主外键关系来维系。在应用开发中,大多数业务都可以抽象为二维表格,可以采用关系型数据库存储数据。在关系型数据库中,大多是基于SQL来查询的。如:Oracle(重量、付费、银行)、MySQL(轻量、开源、流行)

       非关系型数据库:不同于关系型数据库,非关系型数据库一般不采用SQL作为查询语言,也经常避免使用类似SQL中的JOIN操作来关联多张数据表。如:MongoDB(结构简单)、Redis(基于内存的可持久化的键值对存储数据库——提升系统性能)

对于上图数据结构来说,

mongoDB 只需要一张表,而 mysql 则需要三张表,再通过外键关联

SQL 语法

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

DDL:

CREATE DATABASE - 创建新数据库

ALTER DATABASE - 修改数据库

CREATE TABLE - 创建新表

ALTER TABLE - 变更(改变)数据库表

DROP TABLE - 删除表

CREATE INDEX - 创建索引(搜索键)

DROP INDEX - 删除索引

DML:

SELECT - 从数据库表中获取数据   如:select *(列名称) from user(表名称)where city='shenzhen'

UPDATE - 更新数据库表中的数据  如:update user(表名称)set city='shenzhen' where address='nanshan'

DELETE - 从数据库表中删除数据   如:delete from user(表名称)where city='shenzhen'

INSERT INTO - 向数据库表中插入数据   如:insert into user(表名称) (city, address) values ('shenzhen', 'nanshan')

注意:SQL 对大小写不敏感

Sequelize 介绍

书写 SQL 语句需要一定的技术能力,并且不恰当的 SQL 语句还会带来 SQL 注入漏洞。为了快捷开发,社区出现了一系列的ORM(对象关系映射)类库,来降低操作数据库的成本。在Node.js中,一般采用Sequelize这个ORM类库来操作数据库。

一、安装

书写 SQL 语句需要一定的技术能力,并且不恰当的 SQL 语句还会带来 SQL 注入漏洞。为了快捷开发,社区出现了一系列的ORM(对象关系映射)类库,来降低操作数据库的成本。在Node.js中,一般采用Sequelize这个ORM类库来操作数据库。

二、应用(文档见:https://www.sequelize.com.cn/

1. 在建立连接时,需要传递指定数据库的名称、用户名、密码等连接参数

2. 定义模型,在定义模型时,也可以对字段增加一些约束,如设置默认值、是否允许为空、是否唯一等

以上代表执行后,会生成数据表,如下图

右边可见用原生 sql 语法

3. 通过操作定义的数据模型来实现相关接口,如获取所有的客户信息数据

Koa

一、Koa 是基于 Node.js 的 Web 框架,其特点是轻量、健壮、富有表现力,由 Express 的原班人马打造,目前有 Koa1 和 Koa2 两种版本

       Express、Koa1 和 Koa2 最重要的区别在于异步操作的处理:

Express: 回调函数(ES5)

koa1 : Generator函数+yield语句+Promise语句(ES6)

koa2: async/await+Promise(ES7)

二、Context 对象

       Koa 将 Node.js 的 Request(请求)和Response(响应)对象封装到Context对象中,所以也可以把 Context 对象称为一次对话的上下文,通过加工 Context 对象,就可以控制返回给用户的内容。

       Context 对象还内置了一些常用属性,如context.state、context.cookies、context.throw等,通过这些属性和方法能够实现很多功能,如路由控制、读取Cookie、返回内容给用户等。

三、Koa 中间件

       Koa 中间件函数是一个带有 context 和 next 两个参数的简单函数。context 就是上下文,封装了Request和Response等对象;next 用于把中间件的执行权交给下游的中间件。当前中间件中位于 next() 之后的代码会暂停执行,直到最后一个中间件执行完毕后,再自下而上依次执行每个中间件中next() 之后的代码,类似于一种先进后出的堆栈结构。官方给出的“洋葱模型”示意图来解释中间件的执行顺序。

 那么下面代码粗略演示一下中间件的执行,执行结果如何呢?

常用的 Koa 中间件:koa-bodyparser(解析请求参数)、koa-router(路由控制)、koa-static(加载静态资源)、koa-views(加载HTML模板文件)等

koa-router 文档:https://github.com/ZijianHe/koa-router/tree/master#koa-router

四、简单实践:通过操作定义的数据模型来实现功能:获取所有的客户信息数据的 api

       1. 操作数据库

      2. 编写接口代码

于是,一个简单的获取所有的客户信息数据的 api 就出来了。

代码链接:https://github.com/Buffme/node-koa-mysql

相关文章

  • node+mysql+koa

    数据库 数据库介绍 一、数据库是存储、管理数据的仓库,它提供了对数据的检索、存储、多用户共享访问的能力,并且设法使...

网友评论

      本文标题:node+mysql+koa

      本文链接:https://www.haomeiwen.com/subject/akierltx.html