Sequelize 实现数据为空时的默认值设置

阅读时长 4 分钟读完

介绍

Sequelize 是一个 Node.js 的 ORM 框架,可以与多种数据库进行交互。当我们在开发 Web 应用时,常遇到需要为数据库表的某些字段设置默认值的情况,有些字段在没有输入的情况下可能为空,但我们又希望它有一个默认值,以避免在后续逻辑中出现问题。本篇文章将介绍 Sequelize 如何实现数据为空时的默认值设置。

方案

我们可以通过 Sequelize 提供的 defaultValue 属性为数据设置默认值。如果这个属性被设置为一个固定的值,那么每次新增一条数据时,该值都会被赋给相应字段。例如:

-- -------------------- ---- -------
----- ---- - ------------------------ -
  ----- -----------------
  ---- -
    ----- ------------------
    ------------- --
  -
---

------------------- -- -
  ------ -------------
    ----- -------
  ---
------------ -- -
  ---------------------- -- --
---

在上面的代码中,我们将 age 字段的 defaultValue 设为 18,在创建一条数据时,如果没有设置 age 的值,那么 age 就会被默认赋值为 18。

动态默认值

如果要实现动态的默认值,我们可以重写 defaultValue 属性。例如:

-- -------------------- ---- -------
----- ---- - ------------------------ -
  ----- -----------------
  ---- -
    ----- ------------------
    ------------- -------- -- -
      ------ --- -------------------- - -----
    -
  -
---

------------------- -- -
  ------ -------------
    ----- -------
  ---
------------ -- -
  ---------------------- -- -------- ---- --
---

在上面的代码中,我们将 age 字段的 defaultValue 设为一个函数,返回的就是动态计算得到的默认值。在创建一条数据时,如果没有设置 age 的值,那么 age 就会被默认赋值为这个函数的返回值。

为前端开发者带来的帮助

在前端开发中,我们有时需要从后端获取一些数据,但是这些数据有些字段可能为空而我们又不希望在客户端和后端之间频繁的进行交互。这个时候,通过在后端设置默认值可以有效的减少一些不必要的网络传输,减轻服务器的压力,并提高客户端的性能。

示例代码

-- -------------------- ---- -------
----- --------- - --- --------------------- ----------- ----------- -
  ----- -------
  -------- ----------
  ----------------- ------
---

----- ---- - ------------------------ -
  ----- -----------------
  ---- -
    ----- ------------------
    ------------- -------- -- -
      ------ --- -------------------- - -----
    -
  -
---

------------------- -- -
  ------ -------------
    ----- -------
  ---
------------ -- -
  ---------------------- -- -------- ---- --
---

结论

Sequelize 可以很方便的实现数据为空时的默认值设置,我们可以通过设置 defaultValue 属性为一个值或者函数来实现动态计算默认值。这可以有效的减少不必要的网络传输和服务器压力,提高前端开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674d6c1811e808aa268a1f75

纠错
反馈