安庆生活网 网站首页 资讯列表 资讯内容

云开发系列课程 | 如何访问数据库

2022-01-17| 发布者: 安庆生活网| 查看: 144| 评论: 3|来源:互联网

摘要: 本篇主要介绍MidwayServerless及Mysql数据库进行应用开发。首先像上一课介绍的,先到阿里云云开发平台创建一个数据...

本篇主要介绍Midway Serverless及Mysql数据库进行应用开发。


1. 创建MySQL数据库应用实例

首先像上一课介绍的,先到阿里云云开发平台创建一个数据库。在选择实验室后,使用Midway Serverless MySQL数据库的示例来创建。点击完成之后,云开发平台会自动创建这个项目仓库,同时把一些项目模板创建好,然后就点击开发部署。这个时候云开发平台会打开一个纯云端的WEB IDE,在WEB IDE里可以感受到和本地 IDE几乎一样的开发体验。它提供一个内置终端,可以在里面执行需要的命令。比如先要安装一个开发的依赖,然后去执行本地的Dev环境,这样整个项目就可以在本地给运行起来了。这时在本地就可以进行代码修改了。

WEB IDE的左边是项目的目录数据结构,第一节课已经详细的介绍过目录结构,在此不再做赘述。这个项目里有几个函数,有渲染前端html界面的函数,有数据的增删改查函数,list,update,remove和add,这几个分别对应我们接下来要分享的使用MySQL数据库的增删改查四个功能。

左侧目录架构里有一个叫config的文件夹,在config文件夹里面有一个config.default.ts,熟悉egg.js的同学会知道对于配置会有多套环境,这些配置会与config.default.ts合并,生成一份线上在运行当前环境的一个配置的对象。在配置里会配置一些,比如今天主要介绍的连接MySQL数据库,在这个配置里面我们就会通过环境变量,把一些MySQL的配置给加进来。

在阿里云云开发平台,当你创建好一个实例的时候,云开发平台会给你默认的提供一些配置,比如RDS数据库名称、数据库的连接地址、密码、端口等信息,这些信息会在云开发平台通过环境变量的形式,注入到系统的一个环境变量里面去。

这个环境变量在外面提供的各种配置里面其实都有,我们可以把这些配置拷贝到内部的环境变量里,比如要连接到某些服务器上自创的数据库,或者是其他平台提供的数据库的时候,可以把数据库的连接信息配置到这。比如说数据库的host和port。一般来说Mysql默认的连接端口是3306端口,当配置好了之后,我们通过 configuration.ts文件,在上面导入下配置,importConfig就把配置导入到我们整个Midway的项目里面去了。

index是函数代码,可以通过@Inject把刚刚创建的数据库的实例注进来,然后通过@Config装饰器,把dbConfig的配置注进来。这样注入进来就能拿到dbConfig,就是刚刚一些配置的数据,然后在onReady里进行数据库连接。

当数据库连接完成,我们把数据库名、用户名、密码、端口和连接地址都配好后,再进行数据库的认证连接,这样连接就完成了。如果连接不完成,连接出错了,这个页面会捕获错误直接输出提示;如果连接成功了,系统就会把连接成功的db实例,注入到整个Midway IoC容器里面。这样就可以在其他的任何一个地方去通过@Inject注入代码里,最后就可以通过this.db达到已经连接好的数据库的实例。

熟悉Mysql的同学都知道普通的增删改查和执行各种SQL语句,比如查询是select,更新是 update,删除是delete,插入新增是insert,这些都是一些比较常见的语句,这些都可以通过this.db.query去执行,然后就可以拿到对应的存在数据库里的结果。

我们再介绍一个与上文提到的写法不太一样的函数。上面提到的函数只是声明了这个函数的函数标识,下面这个函数在里面提供了一个中间件的配置。在Midway Serverles框架里面,支持提供就配置一些中间件,相当一个请求进来通过中间件进行拦截,或者说通过中间件进行一些处理,然后再把截下来的数据进行一些返回的处理。

render函数是用来做前端页面渲染的,前端页面会包含html文件和 css样式的代码,还会有一些script前端的解释脚本。StaticFile这个文件可以把一些前端静态的文件通过这个函数进行输出,在default这里可以把一些静态文件的目录指定了一下是build的目录,build的目录其实是通过 public目录来编译生成的。

public的目录里面,有html前端渲染出来的html模板,通过一些编译,会把它生成一个显示出来的html代码。当一个请求首先通过浏览器访问某个域名的地址,再进入到这个函数,最后进入到阿里云的网关,阿里云的网关就会根据这个函数的请求路径去找到对应的函数去执行,然后把这个请求转化到函数里面,再在函数里拿到request对象,这个时候中间件就开始执行了,中间件执行的时候会判断。比如请求路径的文件正好在静态文件 public目录里边有,那么就直接把文件给返回了。

在所有的Midway项目里运行,都是执行npm run dev的,这个时候会去启动前端的一个 dev server,然后再启动一个后端的dev server,比如请求一些函数的接口代理。

当在控制台里面输出开发服务器成功启动后,并且输出一个阿里云的网址,打开网址,可以看到输出info,这个关键的info会匹配到api/list接口,然后会请求 list函数,然后去执行一个query的查询,最后从 todo数据库表里面返回前5条数据。

(演示)可以看到这就是我们用本地server运行起来的一个基于Mysql数据库的一个实例,它其实也是和OTS一样的数据库。

上篇关于OTS介绍的介绍大家可以得知, OTS它是阿里云的表格存储,它是一个非关系型的数据库,它的数据是一条一条在里面有记录的,而且这个数据库和Mysql数据库的区别就在于Mysql数据库需要购买一个双核2G的实例的资源,而OTS表格存储是按使用流量计费的。

比如说我个人的博客,目前我使用的是OTS数据库,因为每天的流量比较低,存储的数据也相对少一些,这样的话每个月或每年整个数据库的使用费用都很低,几乎没有。但如果使用Mysql数据库的话,成本就相对要高一些。阿里云云开发平台为了大家尝试使用这个,会给大家在创新应用的时候免费创建一个RDS就是Mysql数据库的实例,大家可以去免费的去体验,去使用。

怎么去创建自己的Mysql数据库呢?

首先登录阿里云,登陆后会发现在左侧会有一个产品和服务,在这里可以搜索RDS,搜索结果会出现数据库RDS版,然后点击一下就可以进到RDS的管理控制台。点击RDS管理控制台左侧的实例列表,就可以在右上角来创建实例,创建实例后就会跳出一个新的RDS的购买页面,大家可以选择自己要使用什么样的RDS数据库,最后勾选确定。


刚刚演示的Mysql数据库,只展示了5条数据,如果需要修改可以在list的函数里通过select from,然后设置limit限制多少条数据。以上是Mysql数据库的介绍,下面介绍下如何创建OTS数据库,其实前一篇内容都已经介绍过了。

3. 如何创建OTS数据库及两种数据库的区别和应用

我们创建一个OTS数据库,创建好后点击开发部署。OTS数据库整个代码结构和Mysql基本上差不多,在apis里面也会有一些configuration,在config里也同样会有config.default,也是通过环节变量来注入的一些OTS的配置的数据。

在OTS的表格里面也可以通过一些增删改查,获取里面的数据并进行展示。因为OTS数据库是一个非关系型的数据库,是没法通过Mysql进行数据执行的,也就是说没法通过SQL语句进行数据查询。如果有这样的需求,需要通过 table Store的一个实例,然后通过一些参数来查询里面的数据,比如说 getRange,getRange这个方法就是通过 table Store,批量进行数据获取。如果你要获取单条数据,可以用getRow。

update其实是putRow,put就是把一些数据进行更新。执行putRow的时候整个参数对象是需要在一个OTS的数据库里面。它是通过主键进行划区,然后进行一些数据的分区存储的,所以主键是必须要填的,这个主键与Mysql数据库创建时数据后面标注的primaryKey是一样的。无论是查询或是修改,都是通过主键去进行修改的。

Mysql数据库需要修改一个数据的话,一般通过update语句然后去set,比如,去set一条a等于10,b等于20的数据;但是在OTS数据库里,要把某个数据的某些项更改则是通过一个数组传进去的。如果要把它的状态进行一些更改,把它要做事情的内容进行一些更改,它的执行是一个回调形式的,把它通过promise进行一些包装,然后变成一个 promise,之后就可以通过async/await去执行。

remove是一样的,在OTS数据库里这些操作也都是通过primaryKey去做的。在list的时候可以看到我们是这么去写的,有 inclusiveStartPrimaryKey,是指从哪条开始到哪条结束,是批量性的获取,它定义primaryKey排序的规则,比如说逆序排序或者是一个正序的排序,通过排序的规则以及它 ID的最大值和ID的最小值,可以按批量的把这个数据库获取出来。因为OTS数据库返回的数据格式,是一个大的Object,不像Mysql获取后的数据是一条一条的这种数据结果。通过OTS数据库获取的数据,需要对Object进行一些处理之后才能变成的一条一条的这种形式。我们提供OTS数据转化的封装很简单,通过rows这个方法就可以把数据变成一条一条的这种结果形式。

最后阿里云开发平台为了让用户更好的体验该平台特此准备了10元无门槛代金券:

https://workbench.aliyun.com/activities/coupon




分享至:
| 收藏
收藏 分享 邀请

最新评论(0)

Archiver|手机版|小黑屋|安庆生活网  

GMT+8, 2019-1-6 20:25 , Processed in 0.100947 second(s), 11 queries .

Powered by 安庆生活网 X1.0

© 2015-2020 安庆生活网 版权所有

微信扫一扫