【Node 连载 2/9】Node.js ORM 在语雀的探索与实践

本文是 2021 年 12 月 26 日,第三十五届 - 前端早早聊【前端搞 Node.js】专场,来自蚂蚁金服 语雀前端团队 —— 小珲的分享。感谢 AI 的发展,借助 GPT 的能力,最近我们终于可以非常高效地将各位讲师的精彩分享文本化后,分享给大家。(完整版含演示请看录播视频和 PPT):https://www.zaozao.run/video/c35

完整 PPT 请联系小助手(vx:zzleva)获取


正文如下

大家好,我是来自语雀的小珲,是一名全栈开发工程师。 在本次分享的内容如下:

  1. 解释什么是 ORM,以及它在Node.js web 应用中的使用和优缺点。

  2. 大致介绍目前比较常见的两种 ORM 模式 - Active Record 和 Data Mapper,并对它们进行简单对比。

  3. 用架构图和伪代码来详细介绍 ORM 的结构,包括其中的重要部分和相关实现。

  4. 使用 ORM 时可能遇到的问题以及相应的优化措施。

什么是 ORM

为了照顾纯前端的同学,我将先展示一个简单的 demo 来演示 ORM 的使用。我们假定有三张表,用户表、文章表和评论表,它们之间的关系可以用图表现出来。每篇文章只能有一个作者,每个文章可以有多条评论,每一条评论只能属于某一篇文章。接下来我们来看看 ORM 在使用时,如何表达数据库中的关系,并使用它进行业务查询和展示。

首先,我们会使用 ORM 来描述三个实体,包括用户、文章和评论。我们将使用 user 类来对应用户实体,使用 comment 类对应评论实体,使用 article 类对应文章实体。在 article 类中,我们将描述刚刚提到的两个关系,即每篇文章有一个作者,每篇文章有多条评论。我们将根据本地数据库的设置,连接到数据库,进行初始化操作。在初始化函数中,我们会首先连接到数据库,然后对这三张表进行数据清理。接下来,我们将演示如何使用 ORM 进行增删改查操作。

我们将先创建一个用户,并使用 ORM 功能查询出该用户,然后对其进行简单修改,并重新查询结果。接着,我们将创建一个文章,并添加两个评论。然后,我们将使用三种不同的方式来查询文章以及与之相关的作者和评论。在执行结果中,我们可以看到每个操作所对应的SQL语句和调用,以及查询到的结果。在下面的三个不同的API调用方式中,生成的 SQL 语句都是相似的。最终,我们将得到一篇文章及其相关的作者、评论以及其他信息。通过这个 demo,我们可以看到如何在 Node.js 中使用 ORM 进行增删改查操作。

回到主题什么是 ORM? ORM 是对象关系映射(Object Relation Mapping)的缩写,它将数据中表对应着的开发代码或内存中的 model 类与数据库中的某一张表对应。数据表中的每一条数据对应着 model 类的一个实例,数据表中的某个字段对应着 model 类的一个成员变量。使用 ORM 可以将数据库中的数据映射到开发代码中,从而方便地操作数据库的增删改查。

使用 ORM 有很多优点,例如 ORM 会对查询和更新操作进行数据预处理,从而防止 SQL 注入的风险。另外,ORM 屏蔽了直接编写 SQL 的细节,使得开发人员不必自己写 SQL,这对于 SQL 不熟练的人来说是一个好处。此外,由于ORM以模型为基础,因此支持 MVC 的开发架构,并且可以映射所有数据库表到内存的 model 中,这有助于组织和复用代码,避免了到处写SQL的尴尬处境。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值