从零实现一套低代码(保姆级教程)【后端服务】 --- 【22】实现数据库管理的前端页面

摘要

在上一篇中,我们实现了三个接口:

  1. 新增实体的接口
  2. 删除实体的接口
  3. 获取实体列表的接口

其实复杂的地方在于,我们创建一个实体,是在数据库中创建了一张表。而这张表中的数据,是要根据低代码平台中的操作进行更改。

现在,我们有了接口之后,要将这个实体创建,删除等过程,进行可视化。所以我们需要来到AppBuilder项目中。

1.创建数据库管理路由页面

和之前的图片管理一样,我们只需要再添加一个路由页面:

在这里插入图片描述

这里比较简单,我们添加好路由之后,点击事件直接跳转就行了。

  const toDataBase = () => {window.open(`http://localhost:3001/#/dataBase`)}

2.对接口进行适配的页面效果

我们要实现的页面效果,只需要具备对应的三个接口的功能,先来看一下页面。

在这里插入图片描述
可以看到

左侧展示的是实体列表,也就是获取实体列表的接口。
新增实体的按钮是用来触发,新增实体的接口。
右侧的表格展示的是当前选中实体的schema。
删除按钮是删除当前实体的接口。

读者可能会发现,我这个页面是有数据的,有两个实体。读者也可以先用swaager文档,去新增两个实体:

在这里插入图片描述

3.获取实体列表

这里面我只贴上比较重要的代码,具体的代码可以在github上进行查看(地址在最下面)。当然,其实接口有了,页面上面也给了。读者完全也可以自己去实现页面了。

	interface Entity {entityCode: string,entityName: string,entitySchema: EntitySchema}interface EntitySchema {[key: string]: string}const [entityList, setEntityList] = useState<Entity []>([])useEffect(() => {getEntityList()}, [])const getEntityList = () => {axios.post('http://localhost:4000/entity/getEntityList').then(res => {if(res.data.data) {setEntityList(res.data.data)}})}

4.删除实体

  const deleteEntity = (entity: Entity) => {return () => {axios.post('http://localhost:4000/entity/delEntityItem', {entityCode: entity.entityCode}).then(res => {if(res.data.code == 200) {message.success('删除成功');getEntityList()}})}}

5.新增实体

新增实体,接口需要接受三个参数,实体名称,实体编码,实体schema。而schema是一个对象,所以当我们点击新增实体的时候,我需要有一个弹窗,让用户去配置这些信息。

在这里插入图片描述
配置好后,点击确定按钮之后,调用接口。

const handleOk = () => {if(entityName === '' || entityCode === '') {message.error('请输入实体名称或编码')return;}const entitySchema: EntitySchema = {};schemaList.forEach(item => {if(item && item.code) {entitySchema[item.code] = item.type}})axios.post('http://localhost:4000/entity/addEntity', {entitySchema,entityCode,entityName}).then(res => {if(res.data.code = 200) {message.success('新建成功');getEntityList()setEntityName('')setEntityCode('')setSchemaList([])setShowEntityModal(false)}})}

当然这些只是比较关键的代码。具体的代码提交在github上。

https://github.com/TeacherXin/AppBuilder
commit: fix: 第三节:实现实体的添加,删除等对应的前端页面

博主补充

当你实现了这些后,你会发现,我们似乎只创建了实体。也就是数据库的表,但是里面的数据应该从哪里来呢?
在这里似乎只有一个空空的表。其实,我们要想一个问题,我们为什么要做这件事情。为什么要在这里创建表?

答案是,如果我们在低代码里面,有一个表单页面。我们写好数据后,点击保存,我们是需要将数据存储在数据库中的。但是呢,我们在低代码项目里,没有办法创建数据库,所以要在外边,创建好数据库。

现在我们就可以在低代码项目里,进行数据的存储了。那如何进行存储呢?读者可以自行脑补一下先,我们后面会继续说这个问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2808977.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式学习-qt-Day1

嵌入式学习-qt-Day1 一、思维导图 二、作业 1.自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//字体设置QFont font1;//创建字体对象1font1.setWeight(QFont::Bold);//字体…

魔改Mac OS渗透测试工具箱!

简介 本工具箱为v1版本&#xff0c;由"森然"师傅进行二开。 通过Python进行调用&#xff0c;并实现图形化界面。 参考&#xff1a;狐狸工具箱&#xff0c;闲客工具箱 环境以及工具 综合了常用的几个工具 适配Mac、Windos、Linux用户 注意&#xff1a;自带的jav…

HTTP 与HTTPS笔记

HTTP 80 HTTP是一个在计算机世界里专门在【两点】之间【传输】文字、图片、音频、视频等【超文本】数据的约定和规范。 HTTP状态码 1xx 提示信息&#xff0c;表示目前是协议处理的中间状态&#xff0c;还需要后续的操作&#xff1b;2xx 200 204 026 成功3xx 重定向&#xff…

仿12306校招项目业务二(列车检索)

目录 验证数据 加载城市数据 查询列车站点信息 查询列车余票信息 构建列车返回数据 12306 项目中列车数据检索接口路径 &#xfeff; TicketController的pageListTicketQuery&#xfeff;。 GetMapping("/api/ticket-service/ticket/query")public Result<T…

带使能控制的锂电池充放电解决方案

一、产品概述 TP4594R 是一款集成线性充电管理、同步升压转换、电池电量指示和多种保护功能的单芯片电源管理 SOC&#xff0c;为锂电池的充放电提供完整的单芯片电源解决方案。 TP4594R 内部集成了线性充电管理模块、同步升压放电管理模块、电量检测与 LED 指示模块、保护模块…

Rust升级慢,使用国内镜像进行加速

背景 rustup 是 Rust 官方的跨平台 Rust 安装工具&#xff0c;国内用户使用rustup update的时候&#xff0c;网速非常慢&#xff0c;可以使用国内的阿里云镜像源来进行加速 0x01 配置方法 1. Linux与Mac OS用户配置环境变量 修改~/.bash_profile文件添加如下内容&#xff1…

【服务发现--ingress】

1、ingress介绍 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 是对集群中服务的外部访问进行管理的 API 对象&#xff0c;典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟…

if语句test

import com.sun.jdi.PathSearchingVirtualMachine;import java.sql.SQLOutput; import java.util.Scanner;public class Test5 {public static void main(String[] args) {//在电影院检查票据&#xff0c;票据在1-100之间才是真实有效的票据&#xff0c;且奇数做左边&#xff0…

2.25基础会计学

资本公积是指由股东投入、但不能构成“股本”或“实收资本”的资金部分。 盈余公积是指公司按照规定从净利润中提取的各种积累资金。 所以区别在于盈余公积来自净利润。 借贷其实就是钱从哪来和到哪去的问题&#xff0c;来源是贷&#xff0c;流向是借。比如购入9w原材料&…

Vue事件处理之v-on

1. 使用及定义 定义方法 function 方法名称(接受的event或是什么都不写) {//不管方法后括号内写与不写event,都可以接受到方法内表达式 }//定义一个接受参数的方法,此时也会在传入event function 方法名称(传入参数) {//可接受传入参数与event方法内表达式 } //定义一个接受参…

Cover和contain属性

一.背景的盒子 代码&#xff1a; <body><div class"box"></div><style>.box {width: 500px;height: 500px;border: 1px solid #ccc;background: url(./20191017095131790.png) no-repeat;}</style></body> 盒子的宽度和高度是…

软件游戏显示d3dx9_42.dll丢失的5种解决方法,快速解决dll问题

当计算机系统中d3dx9_42.dll文件丢失时&#xff0c;可能会引发一系列运行问题和功能异常&#xff0c;具体表现形式多样且影响范围较广。首先&#xff0c;对于依赖于DirectX 9.0c版本的各类应用程序&#xff0c;尤其是部分经典的老款游戏&#xff0c;由于d3dx9_42.dll是其中不可…

2024年危险化学品经营单位主要负责人证考试题库及危险化学品经营单位主要负责人试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年危险化学品经营单位主要负责人证考试题库及危险化学品经营单位主要负责人试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特…

Sentinel 动态规则扩展

一、规则 Sentinel 的理念是开发者只需要关注资源的定义&#xff0c;当资源定义成功后可以动态增加各种流控降级规则。Sentinel 提供两种方式修改规则&#xff1a; 通过 API 直接修改 (loadRules)通过 DataSource 适配不同数据源修改 手动通过 API 修改比较直观&#xff0c;…

代码随想录算法训练营第三天

● 自己看到题目的第一想法 203.移除链表元素 方法一&#xff1a; 思路&#xff1a; 设置虚拟头节点 dummyhead 设置临时指针 cur 遍历 整个链表 循环&#xff1a; 如果 cur !nullptr &&cur->next !nullptr 则 遍历链表 否则结束遍历 如果 cur->next val 则…

CSS之包含块(contatining block)

可能了解包含块的人很少&#xff0c;但有这么个问题&#xff0c;大家可以看看。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scal…

【架构】GPU架构总结

文章目录 GPU架构GPU渲染内存架构Streaming Multiprocessor(SM)CUDA CoreTensor CoreRT CoreCPU-GPU异构系统GPU资源管理模型 GPU架构演进G80 架构Fermi 架构Maxwell架构Tesla架构Pascal架构Volta 架构Turing架构Ampere 架构Hopper架构 参考文献 GPU架构 主要组成包括&#xf…

报错:org.springframework.jdbc.BadSqlGrammarException:

//报错 2024-02-24 19:44:10.814 ERROR 6184 --- [nio-9090-exec-5] c.e.exception.GlobalExceptionHandler : 异常信息&#xff1a; org.springframework.jdbc.BadSqlGrammarException: GPT&#xff1a; 根据异常信息&#xff0c;这是一个Spring框架抛出的BadSqlGrammar…

MATLAB:数组与矩阵

2.1 数组运算 数组运算时MATLAB计算的基础。由于MATLAB面向对象的特性&#xff0c;这种数值数组称为MATLAN最重要的一种内建数据类型&#xff0c;而数组运算就是定义这种数据结果的方法。 2.1.1 数组的创建和操作 在MATLAB中一般使用方括号“[]”、逗号“,”、空格和分号“;…

openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法

文章目录 openssl3.2 - crypto-mdebug被弃用后, 内存泄漏检查的替代方法概述笔记查看特性列表openssl3.2编译脚本 - 加入enable-crypto-mdebug看看有没有替代内存诊断的方法?main.cppmy_openSSL_lib.hmy_openSSL_lib.c备注备注END openssl3.2 - crypto-mdebug被弃用后, 内存泄…