从零实现一套低代码(保姆级教程)【后端服务】 --- 【23】实现数据库表新增数据以及页面展示

摘要

在上一篇中,我们实现了可视化创建数据库表。并没说怎么对表中的数据进行操作。OK,现在我们来实现相关的内容。
如果说,对于新增数据我们无非有两种入口:

  1. 在AppBuilder中,可以通过可视化操作数据
  2. 在XinBuilder中,可以通过表单等方式进行提交

但是,不管是哪种方式,我们首先应该有添加数据的接口。

1.实现新增实体数据和查看实体数据的接口

现在,我们来到我们的XinBuilderServer项目中。这里提一嘴,虽然我们是在实现后段服务,但其实是三个项目来回切换着实现。在我们之前实现创建实体等接口方法下,继续写新增实体数据和查看实体数据的接口。

新增实体数据,首先我们要获取到对应的实体表,然后根据传入的数据进行新增。

  async addEntityData(body: EntityInfo): Promise<void> {const DBRootModule = mongoose.createConnection('mongodb://127.0.0.1/localData');const entity = await this.EntityModule.findOne({entityCode: body.entityCode});const Model = DBRootModule.model(body.entityCode,new Schema(entity.entitySchema),body.entityCode);await Model.create({...body.entityParam})}

获取实体数据就更简单了,找到对应的实体表,直接find全部就可以了。

  async getEntityData(body: EntityInfo): Promise<Object []> {const DBRootModule = mongoose.createConnection('mongodb://127.0.0.1/localData');const entity = await this.EntityModule.findOne({entityCode: body.entityCode});const Model = DBRootModule.model(body.entityCode,new Schema(entity.entitySchema),body.entityCode);return Model.find()}

Service中我们实现好了之后,就可以来到Controller中,实现对应的控制了。

  @Post('addEntityData')@ApiOperation({summary: '添加实体数据'})async addEntityData(@Body() EntityInfo: EntityInfo) {return {code: 200,data: await this.EntityService.addEntityData(EntityInfo),message: 'Sucess'}}@Post('getEntityData')@ApiOperation({summary: '获取实体数据'})async getEntityData(@Body() EntityInfo: EntityInfo) {return {code: 200,data: await this.EntityService.getEntityData(EntityInfo),message: 'Sucess'}}

代码写好了之后,我们可以在Swaager文档中测试一下:

在这里插入图片描述

这部分代码我们放在了github上
https://github.com/TeacherXin/XinBuilderServer2
commit: fix: 第五节:实现添加实体数据和查看实体数据的接口

如果读者看到了这里,并且手动跟着实现了,那么请将删除实体数据的接口自行完成。

2.实现AppBuilder中的实体数据展示

Ok,现在我们有了数据之后,我们就可以在AppBuilder项目中的表格展示了。

来到我们的AppBuilder项目中,具体的代码就很简单了。
只需要根据实体的code去查询对应表的数据,然后进行展示即可。

  useEffect(() => {const columns = getColumns();setColumns(columns)dealEntityData();}, [entity])const dealEntityData = () => {axios.post('http://localhost:4000/entity/getEntityData', {entityCode: entity?.entityCode}).then(res => {if(res.data.data) {setEntityData(res.data.data)}})}

现在我们思考一个问题,需要在AppBuilder这个项目中,做新增实体数据的口子吗。这个我认为是不需要的,因为我们肯定是希望在低代码项目里对数据进行新增,在AppBuilder中,我们只做实体的新增,不做数据的新增。这也就是对象建模,只做一个壳子,数据交给XinBuilder来处理。

这部分代码提交在github上
https://github.com/TeacherXin/AppBuilder
commit: fix: 第四节:实现实体数据的展示

博主补充

现在,我们还有一个问题。就是如何在XinBuilder中和我们创建好的实体进行关联。
一个很简单的做法是,在XinBuilder中做一下ajax的请求,但这就需要用户来写一下代码。而且目前我们还没有实现XinBuilder的事件系统(这部分我们需要在运行时部分写)。

这个问题,在下一章我会给出一个解决方案,如果读者有想法也可以在评论区留言,我们一起探讨。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序--vscode配置

要在vscode里开发微信小程序&#xff0c;需要安装以下两个插件&#xff1a; 安装后&#xff0c;即可使用vscode开发微信小程序。 注&#xff1a;若要实现鼠标悬浮提示&#xff0c;则需新建jsconfig.json文件&#xff0c;并进行配置&#xff0c;即可实现。 jsconfig.json内容如…

分披萨 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 “吃货”和“馋嘴”两人到披萨店点了一份铁盘(圆形)披萨&#xff0c;并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。 但是粗心服务员将披萨切成了每块大小…

Qt RGB三色灯上位机

今天突发奇想做一个Qt RGB三色灯上位机&#xff0c;刚好手上有一个RGB三色灯和arduion开发板。 我是想实现一个颜色选择器界面然后鼠标点击颜色区域就可以发出rgb的值&#xff0c;然后把这个值通过串口线发送给arduion,arduion再解析出数据发送给RGB三色灯。 实现界面如下&…

免编程经验,搭建宠物店小程序轻松实现

在如今的互联网时代&#xff0c;小程序商城已成为各行业推广和销售的热门方式。对于花店来说&#xff0c;搭建一个自己的小程序商城不仅可以提升品牌形象&#xff0c;还可以方便顾客在线选购花卉产品。下面就来教大家如何轻松搭建一个花店小程序商城&#xff0c;并通过引流获得…

计网自顶向下:网络应用层【Web应用与HTTP协议】

目录 Web应用Web页URLWorld Wide Web 超文本传输协议——HTTP超文本C/S结构报文请求报文响应报文HTTP响应状态码try&#xff1a;在命令行里手工给web服务器发送请求 http连接的两种类型非持久&#xff08;http1.0&#xff09;持久&#xff08;http1.1&#xff09;▷ 流水线▷ 非…

基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .................................................................. load yolov2.mat% 加载…

如何本地部署LightPicture结合cpolar内网穿透打造个人云图床

文章目录 1.前言2. Lightpicture网站搭建2.1. Lightpicture下载和安装2.2. Lightpicture网页测试2.3.cpolar的安装和注册 3.本地网页发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 现在的手机越来越先进&#xff0c;功能也越来越多&#xff0c;而手机…

记生产OOM的故障分析

一、引言 生产上告警&#xff0c;交易堵塞&#xff0c;服务无响应&#xff0c;使用jstack、jmap、jhat命令进行故障分析。 Java虚拟机&#xff08;Java Virtual Machine&#xff0c;简称JVM&#xff09;作为Java语言的核心组件&#xff0c;为Java程序提供了运行环境和内存管理…

01背包问题:组合问题

01背包问题&#xff1a;组合问题 题目 思路 将nums数组分成left和right两组&#xff0c;分别表示相加和相减的两部分&#xff0c;则&#xff1a; left - right targetleft right sum 进而得到left为确定数如下&#xff0c;且left必须为整数&#xff0c;小数表示组合不存在&…

供应链大数据:穿越经济迷雾的指南针

随着经济形势的变幻莫测&#xff0c;企业运营面临着前所未有的挑战。在这个充满不确定性的时代&#xff0c;供应链大数据如同一盏明亮的指南针&#xff0c;为企业提供精准的方向指引。下面&#xff0c;我们将深入探讨供应链大数据如何帮助企业洞察市场趋势、优化库存管理、降低…

绝对路径拼接漏洞 [NISACTF 2022]babyupload

打开题目 最开始以为是文件上传的漏洞 结果发现无论我们上传什么文件都会显示bad filename 去网上看了大佬的wp知道 我们直接去看源代码得到提示 /source 那我们去访问一下这个路径看看 得到一个下载文件 用记事本打开得到 源代码如下 from flask import Flask, request, r…

支付流程的理解

开发指引-JSAPI支付 | 微信支付商户平台文档中心 业务流程图&#xff1a; 首先&#xff0c;从业务流程&#xff0c;当有人问你的时候&#xff0c;反问&#xff1a;公司有没有确认跟支付宝合作还是跟微信合作&#xff0c;看有没有签订协议&#xff0c;有的话&#xff0c;要确认…