前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >我们为什么推出数据模型

我们为什么推出数据模型

作者头像
腾讯云开发TCB
发布2024-08-26 18:35:09
900
发布2024-08-26 18:35:09
举报
文章被收录于专栏:云开发

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

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

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

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

升级之前

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

01、数据结构的定义不简单

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

02、数据接口校验复杂

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

03、后续业务衍生需求多

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

云开发的解决方案:数据模型

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

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

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

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

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

代码语言:javascript
复制
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() 方法创建新文章:

代码语言:javascript
复制
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,而不是正确的文本类型。当我们尝试插入这条数据时,数据模型会检测到类型不匹配,并抛出一个错误。输出结果如下:

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

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

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

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

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

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

总结

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发CloudBase 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档