当前位置: 首页 > news >正文

基于模块自定义扩展字段的后端逻辑实现(一)

目录

一:背景介绍

二:实现过程

三:字段标准化

四:数据存储

五:数据扩展

六:表的设计


一:背景介绍

  最近要做一个系统,里面涉及一个模块是使用拖拉拽的形式配置模块使用的字段表单,主要包括新建/编辑模块,模块详情等。这里涉及的重点是新建模块的表单是手动拖拉拽配置出来的,里面的字段类型和数量也是任意的。

配置完以后,在新建模块页面可以读取配置的表单数据,用户填写数据,保存数据,在列表或者详情查看。

二:实现过程

基于模块自定义扩展字段的后端逻辑实现,通常涉及到以下几个步骤:

首先,需要明确业务需求。确定需要哪些扩展字段,以及这些字段的用途。例如,一个用户管理模块可能需要一个自定义字段来存储用户的生日。

数据库设计:在设计数据库时,你需要为每个自定义扩展字段创建一个新的列。通常,这些列会存储在一个专门的表中,这个表会和主表(例如用户表)通过某种关联(例如外键)进行连接。

后端逻辑实现:

模型定义:在后端代码中,你需要定义一个模型来映射到数据库中的表。
数据存储:当需要存储数据时,你可以创建一个方法来处理自定义字段的存储。这个方法应该能够接受一个对象,其中包含所有的字段(包括自定义字段),然后将这些字段存储到数据库中。
数据检索:当需要从数据库中检索数据时,你需要创建一个方法来获取所有的字段,包括自定义扩展字段。这个方法应该能够返回一个包含所有字段的对象。
数据更新:当需要更新数据时,你可以创建一个方法来处理自定义字段的更新。这个方法应该能够接受一个对象,其中包含所有的字段(包括自定义字段),然后将这些字段更新到数据库中。
前端交互:在前端界面上,你需要为每个自定义扩展字段提供一个输入框或其他类型的输入控件。当用户填写这些字段并提交表单时,前端代码应该将这些数据发送到后端进行处理。

安全性和验证:在处理数据时,你需要确保数据的安全性和完整性。例如,你可以使用输入验证来确保用户输入的数据是有效的,并且符合你的业务规则。

三:字段标准化

  这样的业务问题,我们要做的开发,首先要把问题标准化。上面谈到字段是自定义的,因为涉及到逻辑编码,我们需要把字段归类分组,字段的作用是在表单创建和展示使用,我们正常的创建表单一般是一个标题对应一组字段。比如说商品基础信息对应商品价格,商品数量等基本信息字段。这里的商品基础信息我们可以定义为字段分组,商品价格可以定义为字段。这样我们的字段可以分为两种类型,一种是分组仅仅是展示使用,一种是字段本身需要存储数据。我们确定了字段的类型以后,我们发现正常一个表单的字段是需要展示样式和布局的比如说input类型的单行文本和select类型的下拉数据这是两种不同的布局,因此我们的字段也是需要根据不同的类型,进行不同的处理。我们可以把常用的数据类型分组归类大致分为单行文本,多行文本,下拉,日期,单选,布尔等。

四:数据存储

上面我们把字段归类和分组,这样一个新建的表单已经可以做出来了,并且可以根据不同的字段类型显示不同的布局和样式。那么我们在表单填写完数据以后,如何存储是一个问题。由于我们的模块创建以后是需要列表展示的,那就可能涉及到搜索问题。因此我们把字段进行横向扩展是一个好方法。比如新建一个字段,我们会在业务主表里扩展一个字段。这样列表的每一个字段都是独立的,支持搜索和后期统计功能。这样新建一个模块数据,相当于主表里插入一行数据。

五:数据扩展

我们主表里的数据是一对一的,但是有些数据可能需要一对多,比如一个商品可能对应多个规格,这样规格的数据就需要多行存储。所以我们需要扩展主表的数据,需要建立一个扩展规格表,那么我们建立规格类型数据的时候,需要在扩展规格表里横向扩展数据。

六:表的设计

 首先我们需要创建一个存储字段库的表,这里用来存储各种类型的字段和字段分组。前端拖拉拽的字段都来自这里,其次我们需要创建一个业务主表,用来存储一些扩展字段数据和一些固定字段。这里说下固定字段一个业务里面虽然模块是自定义拖出来的,但是必定有些字段是固定的比如创建时间,创建人等。最后我们还需要一个扩展字段表,用以保存一些一对多的数据。

相关文章:

  • php 字符串常用函数
  • 计算机找不到msvcr100.dll的多种解决方法分享,轻松解决dll问题
  • 中国智造闪耀CES | 木牛科技在美国CES展亮相多领域毫米波雷达尖端方案
  • redis stream restTemplate消息监听队列框架搭建
  • 零基础也可以探索 PyTorch 中的上采样与下采样技术
  • 以太网交换机——稳定安全,构筑数据之桥
  • 【2019】360Java工程师客观题总结
  • AI绘画软件Stable Diffusion模型/Lora/VAE文件存放位置
  • vue前端开发自学demo,父子组件之间传递数据demo2
  • 235.【2023年华为OD机试真题(C卷)】机器人搬砖(二分查找-JavaPythonC++JS实现)
  • 硬核加码!星邦蓝助力全球运力最大固体火箭“引力一号”海上首飞
  • python处理目录下文本文件去除空格和空行
  • 关于Python里xlwings库对Excel表格的操作(三十二)
  • Rust类型之字符串
  • 活动回顾∣“全邻友好,艺术大咖交流会”——员村街开展社区微型养老博览会长者文艺汇演活动
  • [Vue CLI 3] 配置解析之 css.extract
  • [译] React v16.8: 含有Hooks的版本
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Babel配置的不完全指南
  • js 实现textarea输入字数提示
  • js面向对象
  • k8s 面向应用开发者的基础命令
  • Mysql数据库的条件查询语句
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • vue中实现单选
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 工作中总结前端开发流程--vue项目
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 计算机在识别图像时“看到”了什么?
  • 警报:线上事故之CountDownLatch的威力
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 前嗅ForeSpider教程:创建模板
  • 三栏布局总结
  • 试着探索高并发下的系统架构面貌
  • 收藏好这篇,别再只说“数据劫持”了
  • 探索 JS 中的模块化
  • 推荐一个React的管理后台框架
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 容器镜像
  • ​2020 年大前端技术趋势解读
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (1)(1.13) SiK无线电高级配置(五)
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (十八)三元表达式和列表解析
  • (学习日记)2024.01.09
  • (一)appium-desktop定位元素原理
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET Micro Framework初体验