测试平台系列(54) 数据库表接口适配前端页面(下)

简介: 数据库表接口适配前端页面(下)

大家好,我是米洛,求三连!

回顾


上一篇我们编写了树的最外层,但是因为我们还有很深的层级要嵌套,所以我们现在开始。

准备好了吗?

本文依旧有一定的难度,需要大家理解值传递和引用传递。

先看看最终效果图,来点信心。

27.jpg

image

实现伪代码


上一节我们写的都是伪代码,这次直接来实现它。

28.jpg

编写方法,查询数据库和数据表

result是我们最终返回结果。

最外层我们先查询所有的环境,并生成一个映射关系:

环境id => 环境名称

为什么需要env_index


那么env_index又是干什么的呢?

因为环境是最外层,我们需要通过环境id找到我们要往哪个环境的children里面加第二层的数据,而我们生成的是一个列表,这就导致如果我们需要插入环境id=2的children的时候,不得不去搜索一次result,从result里面找到id="env_2"的那条数据,接着去append到他的children。

这样时间复杂度会非常高,但是如果我们提前记录了,我环境id=2的时候插入到result的第几个children,那么就省略了从数组中查询的那步,等于用空间(env_idx)换了查询的时间。

完成第一层数据录入


29.jpg

接着获取session,并查出所有没被删除的database数据

30.jpg

image

可以看到,我们遍历拿到的PityDatabase数据,接着从env_map里把环境id转为环境名。

再开始判断env_index里面环境名的索引,在result的第几个,如果没有的话,说明result里面还没有这个环境的任何数据。

那我们就插入一条环境数据。


result.append(dict(title=name, key=f"env_{name}", children=list()))

那此时result就变成了:


[
    {title: "fat", key: "env_3". children: []}
]

这是环境3在result的索引肯定是数组的最后一个元素,因为我们刚刚才append进去的,所以idx = len(result)-1

接着我们把idx存起来,这个可以理解的吧~

MetaData是我们获取数据表的关键,为了避免重复生成,我这边只在最外层生成了,传递给get_tables方法。

实现内层数据


注意这里我用get_tables方法的时候,将result[idx]['children']参数传了进去,意味着后续所有的数据都会append到这个children里面去,十分方便。

而children是个list,list是引用传递的。所以我在get_tables里面对list的改动,其实也是生效的,可以看到get_tables没有任何返回,那是因为我的result里头的children被改掉了,导致了我的result间接被改掉了,就这个道理。

看看get_tables怎么写


31.jpg

image

  1. 我们先通过db_helper获取到当时的连接conn,里面包含了session和engine,还记得不?
  2. 我们再次新建一个list,叫database_child,看名字就知道,他是database再下面一层的数据。
  3. 我们编写当前database层的节点数据,其实就是个dict,title因为我们需要展示对应的数据库ip+port,所以是这样:

f"{data.database}({data.host}:{data.port})"

因为database有唯一id,所以key可以叫『database_{data.id}』

children即是上一步创建的list().

  1. 获取engine
  2. meta获取表信息
  3. 遍历表

这边再次说明一下,get_tables参数中的children,是环境的下一层,database_child是数据库的下一层,而dbs则是当前层次。

遍历表了以后,我们临时创建temp数组(temp是数据表的下一层,实际上存的是字段信息。)

32.jpg

这段代码是把table这一层加到database_child数组里面去

大家如果实在看不明白,以key为标准:

  • key以env开头说明是环境层
  • 以database开头说明是数据库层
  • 以table开头说明是数据表层
  • 以column开头说明是字段层
  1. 遍历字段数据,并把对应的字段加到temp数组,因为改了temp数组,所以实际上database_child(表那一层)也得到了改动。

33.jpg

primary_key字段代表是否是主键

  1. 最终把咱们这一层的dbs->带有表数据->带有字段数据,给加入到刚才传递给咱们的children数组中。

34.jpg

image

查看完成数据


35.jpg

image

0.jpg

可以看到数据正常展示了,和前端需要的一样

这样前端仔就不会再纠结数据怎么转换了,非常好用!

看看实战效果


由于原生组件提供的图标啥的都比较粗糙,我们需要进行一下调整。

再来一发效果图,由于右侧的SQL编辑器还在路上,我们就不废话了。

36.jpg

image



相关文章
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
1392 2
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1288 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Java 测试技术 数据库
使用benchmarksql测试数据库处理能力
传统的OLTP业务,应用系统使用 java 开发,并且不建议使用存储过程,使用 benchmarksql 压测数据库最公平,既可以测试数据库性能,也可以测试JDBC驱动
1182 88
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
661 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
前端开发 Java 关系型数据库
基于ssm的考研图书电子商务平台,附源码+数据库+论文
考研图书电子商务平台是一个基于Java的B/S架构系统,适用于Windows环境。该平台设有管理员和用户权限,管理员可管理商品、用户、留言板及订单,用户可管理收货地址、订单、收藏及购买商品。技术框架包括前端Vue+HTML+JavaScript+CSS+LayUI,后端SSM,数据库为MySQL。项目包含17个数据库表,支持Maven构建。提供演示视频和详细文档,支持免费远程调试安装,确保顺利运行。
325 13
基于ssm的考研图书电子商务平台,附源码+数据库+论文
|
IDE 前端开发 开发工具
用通义灵码IDE做产品高保真原型和前端页面
通义灵码IDE助力高效开发,告别传统Axure原型图的繁琐沟通。通过该工具可直接生成高保真产品原型与前端页面,大幅提升客户确认效率及满意度。现已将相关演示发布至B站(https://www.bilibili.com/video/BV18qT7ziEb7/?vd_source=dc6a6864c895818db6ce4170d50b3557),欢迎体验!用直观操作代替反复说明,让交付更流畅。
1068 1
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
675 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
1000 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
1173 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
851 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程

热门文章

最新文章