Sequelize 中如何定义默认值(default)

前言

Sequelize 是一个 Node.js 中的 ORM(Object-Relational Mapping)框架,可以帮助我们更加方便地操作数据库。在 Sequelize 中,我们经常需要使用到默认值,本文将详细介绍如何在 Sequelize 中定义默认值。

正文

在 Sequelize 中,我们可以在定义模型时设置默认值。有两种方法可以设置默认值:一种是通过数据类型的 defaultValue 属性,另一种是通过 model 的 Getter 函数。

方法一:使用 defaultValue 属性

我们可以在定义模型时,通过数据类型的 defaultValue 属性来设置默认值。例如,如果我们需要在创建 User 表时,给 email 设置默认值为“default@example.com”,可以使用如下代码:

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

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

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

在上面的代码中,我们通过设置 email 的 defaultValue 属性为“default@example.com”,来定义了 email 的默认值。当我们在创建用户时,没有指定 email 属性的值,Sequelize 将自动使用该默认值。

方法二:使用 Getter 函数

我们还可以使用 model 的 Getter 函数来设置默认值。Getter 函数是一个用于获取属性值的方法,当我们读取某个属性时,如果该属性没有设置值,Sequelize 将会自动调用 Getter 函数来获取默认值。

例如,如果我们需要在创建 User 表时,给 name 设置默认值为“Anonymous”,可以使用如下代码:

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

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

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

在上面的代码中,我们通过定义一个 Getter 函数来指定 name 的默认值。当我们创建用户时,如果没有指定 name 属性的值,Getter 函数将会被自动调用,从而返回默认值。

结论

在 Sequelize 中,我们可以通过设置数据类型的 defaultValue 属性或 model 的 Getter 函数,来定义默认值。这两种方法都可以根据需求,更加灵活地定义默认值。

参考资料

Sequelize 官方文档:https://sequelize.org/master/manual/default-values.html

思考题

  1. 如何在 Sequelize 中定义一个自增 ID?
  2. 如何在 Sequelize 中定义一个唯一约束?

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6734b1300bc820c5824a93d0