Sequelize 是一个用于 Node.js 操作 SQL 数据库的 ORM 工具。在 Sequelize 中,定义模型时需要规定该模型对应数据库表的字段。开发者在设计数据库表结构时,可能会遇到一些字段可选或必填的情况。接下来,本文将详细介绍 Sequelize 如何处理数据库表字段可选和必填的问题。
字段可选
在 Sequelize 中,我们可以使用 allowNull 属性来指定字段是否可选。如果 allowNull 值为 true,则表示该字段可为空;如果 allowNull 值为 false,则表示该字段不可为空。
以下是一个示例:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ----- -- ---- -- ---- - ----- ------------------ ---------- ---- -- --- - ---
在上述示例中,我们定义了一个用户模型,包括 name 和 age 两个字段。其中,name 字段不可为空,而 age 字段可为空。
对于可选字段,我们可以在查询数据时,通过 include 属性来预加载 null 值。我们需要使用 required: false 来指定该字段可选。
以下是一个示例:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ---- -- ---- - ----- ------------------ ---------- ---- - --- ----- - -- - - --------------------- ----- ----- - ----- -------------- ------ - -------- - - ----- ---- -- - ---- - -------- ---- - - - -- -------- - - ------ ----- ----------- -------- ------- --------- ----- - - ---
在上述示例中,我们查询了 User 表中 name 或 age 字段为 null 值的数据,并将可选字段 preFetch 出来。
字段必填
在 Sequelize 中,我们可以使用 validate 属性来指定字段的校验规则。validate 属性是一个数组,其中每个元素都是一个函数,用于对该字段的数据进行校验。如果校验未通过,则会抛出 ValidationError 异常。
以下是一个示例:
-- -------------------- ---- ------- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ------ --------- - ---- - ----- --- ---- ---- ----- ---- -- ------- - --- -- ------------ - - -- ---- - ----- ------------------ ---------- ------ --------- - ------ - ---- ---- ---- -- -- --------- -- ---- - ----- ---- ---- ---- ---- -- ------- ---- -- ----- -- --- -- ---- - ----- ------ ---- ---- ---- -- ---- ---- -- ----- -- ----- - - - ---
在上述示例中,我们定义了一个用户模型,包括 name 和 age 两个字段。其中,name 和 age 字段都是必填字段,并且都设置了校验规则。
如果我们在添加数据时未满足校验规则,则会抛出异常,如下所示:
try { const user = await User.create({ name: 'a', age: 'abc' }); } catch (err) { console.log(err.message); }
在上述示例中,我们尝试创建了一个 name 为 'a'、age 为 'abc' 的用户。由于 age 不是一个合法的整数,因此会抛出异常,提示我们 age 必须是一个整数。
总结
本文介绍了 Sequelize 如何处理数据库表字段可选和必填的问题。在 Sequelize 中,我们可以使用 allowNull 属性来指定字段是否可选,使用 validate 属性来指定字段的校验规则。掌握 Sequelize 处理可选和必填字段的方法,有助于我们更好的设计数据库表结构和优化数据查询。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64dde568f6b2d6eab392f5f8