在 Node.js 中,Sequelize 是一种流行的 ORM 框架,可用于在应用程序中实现数据访问。它提供了许多强大的功能,包括定义模型、创建表格、查询数据等。在创建模型时,您可能需要传递参数来定制模型的行为。在本文中,我们将阐述如何在 Sequelize 中创建模型时传递参数。
Sequelize 创建模型时传递参数
Sequelize 中的模型定义包含在一个名为 sequelize.define()
的函数调用中,该函数返回一个构造函数,该构造函数用于实例化与模型相关的对象。这个函数签名如下:
sequelize.define(modelName, attributes, options)
其中 modelName
是模型名称,attributes
是模型属性,options
是可选的模型选项。在 options
对象中,您可以传递自定义参数以增强模型功能。下面是一个示例:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------------- ----- ---- - ------------------------ - ---------- ----------------- --------- ----------------- ------ ----------------- -- - -- ----- ----------- ----- ---------------- ----- --- ------------------------------------- -- ---- ------------------------------------------ -- ----
在这个示例中,我们使用 timestamps
参数启用了自动时间戳字段,并使用 freezeTableName
参数禁止模型名称的默认自动复数化。
Sequelize 模型选项
Sequelize 中的模型选项用于定制模型的行为。下面是一些常用选项的介绍。
timestamps
timestamps
选项用于启用自动时间戳字段。它会向模型中添加 createdAt
和 updatedAt
两个字段,可保存记录的创建时间和最近修改时间。它的默认值是 true
,但您可以将其设置为 false
来禁用它。例如:
const User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { timestamps: false, });
paranoid
paranoid
选项用于启用软删除功能。它会向模型中添加 deletedAt
字段,用于标记记录已被删除。当您删除记录时,Sequelize 实际上是将 deletedAt
字段设置为当前时间,而不是从数据库中删除记录。这意味着您可以轻松地恢复意外删除的记录。它的默认值是 false
,但您可以将其设置为 true
启用它。例如:
const User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { paranoid: true, });
underscored
underscored
选项用于将模型属性的字段名称从驼峰式命名法转换为下划线分隔符形式。这对于确保数据库表格的一致性很有用。例如:
const User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { underscored: true, });
在这种情况下,模型属性 firstName
将对应于数据库表格中的 first_name
字段。
freezeTableName
freezeTableName
选项用于禁止模型名称的默认自动复数化。例如,如果模型名称为 User
,默认情况下它将映射到 Users
数据库表格。使用 freezeTableName: true
,你可以将其映射到 User
表格。例如:
const User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { freezeTableName: true, });
tableName
tableName
选项用于指定模型映射到的表格名称。例如:
const User = sequelize.define('User', { firstName: DataTypes.STRING, lastName: DataTypes.STRING, email: DataTypes.STRING, }, { tableName: 'my_users', });
在这种情况下,模型将映射到名为 my_users
的表格。
总结
在 Sequelize 中创建模型时传递参数可以定制模型的行为,并增强其功能。timestamps
、paranoid
、underscored
、freezeTableName
和 tableName
是一些常用的模型选项。使用它们可以让您的数据访问更加灵活和高效。
希望这篇文章可以帮助你更好地理解 Sequelize 中的模型选项,并在实际开发中应用它们。以下是示例代码的完整示例:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------------- ----- ---- - ------------------------ - ---------- ----------------- --------- ----------------- ------ ----------------- -- - ----------- ----- --------- ----- ------------ ----- ---------------- ----- --- ------------------------------------- -- ---- ----------------------------------- -- ---- -------------------------------------- -- ---- ------------------------------------------ -- ----
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6533a2e17d4982a6eb730b99