在 Sequelize 中定义模型的不同方法

Posted

技术标签:

【中文标题】在 Sequelize 中定义模型的不同方法【英文标题】:Different ways to define models in Sequelize 【发布时间】:2016-06-16 01:26:45 【问题描述】:

动机:

我正在研究Sequelize 并考虑构建一个ESLint 插件来捕获常见的Sequelize 特定代码样式违规(当然可以静态捕获)。

我正在考虑实施的规则之一(感谢@janmeier)是对每个模型字段强制使用type。据我了解,define() 是一种非常常见的模型定义方式:

sequelize.define('Locale', 
    id: 
        type: DataTypes.INTEGER,
        autoIncrement: true,
        primaryKey: true
    ,
    locale: 
        type: DataTypes.STRING,
        allowNull: false
    
);

问题:

有没有其他方式Sequelize中定义模型及其字段?

【问题讨论】:

【参考方案1】:

出于我开始构建的静态代码分析实用程序的目的,我假设始终使用define() 方法来定义模型。

您应该考虑的唯一一件事是定义模型字段的一般方法有两种

隐式,短版:

sequelize.define('Locale', 
    locale: DataTypes.STRING
);

显式,更长,但更具扩展性和可读性(“显式优于隐式”):

sequelize.define('Locale', 
    locale: 
        type: DataTypes.STRING
    
);

当需要在模型字段上指定其他选项(如 defaultValueunique)时,较长的语法也会有所帮助。

真正帮助我更好地理解如何定义和组织 Sequelize 模型的是 Code Cast 的 Sequelize tutorial 系列。

【讨论】:

以上是关于在 Sequelize 中定义模型的不同方法的主要内容,如果未能解决你的问题,请参考以下文章

sequelize-typescript:模型中get()的通用方法

Sequelize js如何获取关联模型的平均值(聚合)

如何在 Sequelize 模型中定义索引?

从已经定义的模型中获取 Sequelize.js ENUM 值

如何扩展 Sequelize 模型?

Sequelize - 将字段映射到模型定义中的字段别名