评论

我们为什么推出数据模型

我们为什么推出数据模型

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

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

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

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

升级之前

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

01数据结构的定义不简单

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

02数据接口校验复杂

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

03后续业务衍生需求多

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


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

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

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

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

数据模型提供基于模型的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业务应用管理系统发布更灵活

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

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

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

总结

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

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


最后一次编辑于  08-26  
点赞 1
收藏
评论

1 个评论

  • 青寒
    青寒
    08-26

    简言之,云开发弄了个Model层。

    08-26
    赞同 1
    回复
登录 后发表内容