我们为什么推出数据模型

news2024/9/20 7:50:34

调用接口之前,要写大量的字段校验代码?

需要关联读写多张表的数据,难以写出复杂的数据库语法?

不仅需要开发核心的业务逻辑,还需要加班搭建CMS和数据管理页面?

数据不止放在云开发,还需要查询外部 MySQL 的数据?

fcfb4acbe1c4b274dec4067b72965184.jpeg升级之前ff34cf8ea433f261e0324f3210352f8b.jpeg

众所周知,云开发提供的NoSQL数据库以其灵活性和易用性受到开发者的青睐,但其非结构化的数据存储方式也给开发者带来了挑战数据结构的频繁变动、前后端的数据校验逻辑编写以及数据统计分析的需求,都增加了开发的复杂度和工作量。

34f5ffe3d4be6b39923c572ef8ceb631.jpeg

01数据结构的定义不简单

在产品需求确认→接口、流程、数据结构的设计和定义→接口结构、数据库存储结构设计→设计存储结构完成配置→数据记录的读写。

6fff65e312623d509fb5dd9d65ebf35d.jpeg

02数据接口校验复杂

前端和后端都需要进行繁琐的数据格式校验,格式错误或者不兼容,都会导致写入数据库的数据异常或报错无法写入,开发的工作量和复杂度。

cbaca68bccd6e9d24513c3f3aad7ebc3.jpeg

03后续业务衍生需求多

业务产生的数据记录,来自产品经理,或运营人员,甚至是老板的数据统计、分析需求;根据需求,通常都需要开发内部应用,实现数据的管理或调整、数据各种维度的统计分析和界面展示,这不仅耗时,而且存在大量的重复性工作。

af8773b2b48c5cfebe4b091de0dda32f.jpeg

8376f1f7e9724cc0e809808ab5184f99.jpeg云开发的解决方案:数据模型2f60a8ea0ae30fe0bb9f8df4ea33222b.jpeg

数据模型作为一种新的解决方案,它通过以下几个方面来简化开发流程,提升开发效率:

01数据库抽象,简化开发流程

通过使用数据模型在业务和底层数据库间建立一个抽象层。数据模型可以存储到不同的数据库,数据模型增加提供了MySQL类型数据库,进一步再扩展对接自有数据库、存量数据库。

e6fb2fb572afe93df534d0783ee5c8e3.jpeg

数据模型提供基于模型的CRUD方法。云开发NoSQL数据库提供的客户端、管理端SDK及API可以直接读写集合。云开发MySQL数据库或自有MySQL数据库也提供了执行 SQL 命令的方法,可在云函数中调用。涉及到复杂查询或操作可使用数据库方法来进行。

例如使用 upsert() 方法创建或更新文章内容:

const post = {

title: "Hello World",

body: "Hello World",

_id: "foo",

};

const { data } = await models.post.upsert({

create: post,

update: post,

filter: {

where: {

_id: {

$eq: post._id,

},

},

},

});

console.log(data);

// 新增时返回

// {

// "count": 0,

// "id": "foo"

// }

// 更新时返回

// {

// "count": 1,

// "id": ""

// }

02数据结构定义自动校验

数据模型允许开发者在设计阶段定义清晰的数据结构,并自动进行数据校验。使用数据模型来进行结构设计,通过数据模型的结构、字段名称、字段类型等设计完成后,完成对应的数据库表或集合,SDK也和数据模型直接对应,具备可使用的数据操作方法,如有修改,代码中的数据字段读写可同步变更。

模型会自动根据配置进行校验,例如string类型字段传递了数值,bool类型字段传递了字符串,错误传递会在数据操作前就检验及报错,针对常用格式,邮箱、电话、地区、文件提供格式校验,减少了代码中的校验逻辑,还提高了数据操作的安全性和一致性。

示例:首先在云后台的数据模型中定义一个简单的文章数据模型 post,再定义了两个属性:title(字符串类型)、body(字符串类型),然后尝试插入一个包含错误类型数据的对象:
使用 create() 方法创建新文章:

try {

const { data } = await models.post.create({

data: {

title: "你好,世界👋",

body: 123456, // 这里故意设置为字符串类型,而非对象 ID 类型

},

});
// 返回创建的文章 id

console.log(data);

// { id: "7d8ff72c665eb6c30243b6313aa8539e"}

} catch (error) {

console.error("Error:", error);

}

在这个例子中,我们故意将 body 属性的值设置为数字类型 123456,而不是正确的文本类型。当我们尝试插入这条数据时,数据模型会检测到类型不匹配,并抛出一个错误。输出结果如下:

Error: WxCloudSDKError: 【错误】数据格式校验失败。根因:[#/body: expected type: String, found: Integer],原因:字段[正文], 标识[body], 类型不匹配:期望类型:字符串。,解决步骤:请按照原因修改数据类型。errRecord:{"title":"你好,世界👋","body":123456}【操作】调用 post.create。

这个错误提示表明,数据模型成功地检测到了类型错误,并阻止了错误数据的插入。这有助于确保数据的准确性和一致性。

03业务应用管理系统发布更灵活

数据模型可以一键生成数据应用,提供基本的增删改查功能,大幅减少了后台开发的工作量,加快了应用的部署速度。管理平台 提供针对数据内容的增删改查页面,应用本身集成在工作台上,支持可视化用户权限配置。

7486f0decaee1e4c895ae1edec0c6116.jpeg

用户权限配置可以为不同的角色分配不同的应用权限、数据权限。面相运维人员,提供用户数据所有列的完全查询能力。面向运营人员,提供企业CMS后台应用的内容编写、修改权限。面向管理层,提供统计分析应用的访问权限。

d5ab10efe8c6cd4e0e94aad89b51aed1.jpeg

云数据库数据模型将作为云开发中新增的核心能力,正在设计及推进的前端组件、表单组件,后续也可以和数据模型做直接对接,直接在前端生成符合结构的表单及校验规则,大在小程序开发、H5开发、Web应用开发上支持大家更方便和更快速的进行开发。

a8adc952f39d528beb5cbe753f4573c1.jpeg总结cd1aba43485d75c1e1ed94c09fb5a6a7.jpeg

数据模型是云开发中的一项创新技术,它通过简化开发流程,提高开发效率,帮助开发者专注于业务逻辑的实现,而非底层数据操作的细节。随着云开发的不断进步,数据模型将成为推动软件开发现代化的关键力量。

欢迎大家跟我们互动,点击https://tcb.cloud.tencent.com/cloud-admin?_tcbProviderId=mp立即体验产品新功能!

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

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

相关文章

ctfhub-web-基础认证

HTTP协议:什么是HTTP基本认证_网易订阅 https://zhuanlan.zhihu.com/p/64584734 弹框输入密码账号bp抓包,发现了Authorization:后面有一串BASE64的编码(输入的密码) 账号默认是admin,抓包后是basic 把抓到的包发送到爆破模块i…

MySql【约束】

约束 1.1 约束 是什么? 约束,即限制,就是通过设置约束,可以限制对数据表数据的插入,删除,更新 怎么做? 约束设置的语法,大部分是 create table 表名( 字段 数据类型(长度) 约束, 字段 数据类型(长度) 约束 ); 另外一种是建表后,使用alter语句修改表添加约束 1.1 数据类型 其实…

人社大赛算法赛题解题思路分享+第五名

关联比赛: [国家社保]全国社会保险大数据应用创新大赛 赛题背景分析及理解 本次比赛,“精准社保”的赛题为“基本医疗保险医疗服务智能监控”,由参赛队完成数据算法模型的开发设计,实现对各类医疗保险基金欺诈违规行为的准确识别。 在进行了…

AI工业ros机械臂

1、基本介绍 该产品是一款面向于人工智能、机器人工程等专业的实验平台,能够学习基于人工智能技术的智能机器臂相关知识。主要由工业六轴机械臂、机械臂控制器、边缘计算主机、安全防护工作台四部分构成。该产品可完成的课程:机器视觉、机器人操作系统RO…

Stable Diffusion 使用详解(10)--- 场景立体字

目录 背景 复刻立体雏形 Lora 模型 参数设置与controlnet 出图效果 融入图片 提取 合成 背景 虽然都是字,带场景的立体字和上一节讲的做法不太一样。一般来说,一般这种带字体的场景字现阶段都是Lora模型居多,Lora 属于轻量级模型&…

linux系统中USB模块基本原理分析

大家好,今天主要给大家分享一下,USB设备的发展历程。 第一:USB发展变化 随着时代的发展,USB模块也随之不断的升级。 USB1.1:规范了USB低全速传输; USB2.0:规范了USB高速传输,采用NRZI(反向不归零)编码(NRZI采用8bit编码方式),位填充(在数据进行NRZI编码前…

每日一练-threejs实现三维动态热力图

前言&#xff1a;学习自用Three.js搞个炫酷热力山丘图&#xff0c;作者讲解的十分详细&#xff0c;在这里不再过多赘述&#xff0c;直接上代码&#xff01; <template><div class"map" ref"map"></div> </template><script set…

亿发工单管理系统助力五金行业智造升级:高效生产新篇章

在五金制造行业&#xff0c;效率和质量决定了企业的竞争力。五金厂通过引入先进的工单管理系统&#xff0c;成功实现了从传统制造向智能制造的转型。今天&#xff0c;我们将带您深入了解这场变革背后的力量&#xff0c;揭示工单管理系统如何在五金工厂的各个环节中发挥重要作用…

Redis的哨兵(高可用)

实验环境&#xff1a;用一主两从来实现Redis的高可用架构。 一、Redis哨兵 Sentinel 进程是用于监控redis集群中Master主服务器工作的状态&#xff0c;在Master主服务器发生故障的时候&#xff0c; 可以实现Master和Slave服务器的切换&#xff0c;保证系统的高可用&#xff0c…

java一键生成数据库说明文档html格式

要验收项目了&#xff0c;要写数据库文档&#xff0c;一大堆表太费劲了&#xff0c;直接生成一个吧&#xff0c;本来想用个别人的轮子&#xff0c;网上看了几个&#xff0c;感觉效果不怎么好&#xff0c;自己动手写一个吧。抽空再把字典表补充进去就OK了 先看效果&#xff1a; …

找不到msvcp140.dll无法继续执行代码的基本解决策略,快速修复msvcp140.dll错误文件

在我们日常使用电脑的过程中&#xff0c;偶尔会遇到一些令人头疼的技术问题。其中&#xff0c;"找不到 msvcp140.dll 无法继续执行代码" 的错误提示便是许多 Windows 用户常见的难题之一。这条错误消息通常在尝试启动某些程序时出现&#xff0c;指出系统缺少一个关键…

SAP HR 逻辑数据库PNP简单说明

逻辑数据库是专门在逻辑数据库生成器中编辑的开发对象&#xff0c;其核心价值在于为其他ABAP程序提供来自分层树结构节点的数据访问能力。尽管在SAP的最新帮助文档中&#xff0c;逻辑数据库被标记为已过时的&#xff0c;但是在HR模块中仍然被广泛使用&#xff0c;提供读取和处理…

基于Echarts的大屏可视化

效果图 基于vue3echartsTailwind CSS技术实现 实现思路 新建一个新项目 找任一目录进行 pnpm create vitelatest选择vue和js开始项目 导入tailwindcss https://tailwindcss.com/ 选择vue按照里面的步骤一步一步完成即可 将事先准备好的资料导入到assets包中即可 写入项…

Android setText不生效问题(文字不显示)

1.直接说解决方案&#xff1a; 在代码没问题的情况下&#xff0c;将你的TextView的Id改一下&#xff0c;然后再重启编译器即可(注意&#xff0c;不修改TextView的ID&#xff0c;单独重启是没有作用的&#xff01;) 2.出现问题的过程&#xff1a; 新增的一个页面与之前做好的界…

“workon不是内部命令“/virtualenvwrapper-win安装配置

如果出现“workon不是内部命令”&#xff0c;先卸载 pip uninstall virtualenvwrapper-win -y 一&#xff0c;指定所有虚拟环境存放路径&#xff1a; # “E:/Python_Envs_List”换成自己想要的路径 setx WORKON_HOME "E:/Python_Envs_List"二&#xff0c;增加pytho…

【轻松掌握】Jenkins入门指南:构建高效的CI/CD Pipeline

文章目录 前言安装部署安装JDK安装Jenkins下载Jenkins运行Jenkins访问页面填写管理员密码安装推荐的插件 Maven安装下载上传到Linux解压配置镜像运行查看Maven使用的JDK版本 Jenkins安装Maven插件 创建Demo项目创建Jenkins任务填写代码仓库地址Linux安装GIT解决报错配置Maven版…

一文吃透SpringMVC

一、SpringMVC简介 1、什么是MVC MVC是一种软件架构模式&#xff08;是一种软件架构设计思想&#xff0c;不止Java开发中用到&#xff0c;其它语言也需要用到&#xff09;&#xff0c;它将应用分为三块&#xff1a; M&#xff1a;Model&#xff08;模型&#xff09;&#xf…

Phone X│“齐刘海”里到底搭载了哪些传感器?

揭开 “齐刘海”面纱 随着iPhone X的发布&#xff0c;3D人脸识别功能一度成为人们口中津津乐道的新科技&#xff0c;下面就让SITRI的专业团队带领大家揭开人脸识别的神秘面纱。 先从苹果iPhone X说起&#xff0c;让我们看一看这个可爱的“齐刘海”里到底搭载了哪些传感器&am…

杀软对抗 ----> 简简单单免杀某60

在开始之前还是宇宙免责 本Blog讨论的技术问题仅限于学习用&#xff0c;严禁用于非授权情况下执行攻击活动&#xff0c;如未授权攻击所造成一切后果由攻击者独自承担&#xff0c;所展示的代码仅用于杀软对抗学习&#xff0c;测试环境并非真实环境&#xff0c;并无对任何杀软有任…

我的sql我做主!Mysql 的集群架构详解之组从复制、半同步模式、MGR、Mysql路由和MHA管理集群组

目录 Mysql 集群技术一、Mysql 在服务器中的部署方法1.1 在Linux下部署mysql1.1.1 安装依赖性&#xff1a;1.1.2 下载并解压源码包1.1.3 源码编译安装mysql1.1.4 部署mysql 二、Mysql的组从复制2.1 配置mastesr2.2 配置salve2.3 当有数据时添加slave22.4 延迟复制2.5 慢查询日志…