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

Posted

技术标签:

【中文标题】Sequelize - 将字段映射到模型定义中的字段别名【英文标题】:Sequelize - map fields to field alias in model definition 【发布时间】:2019-10-27 11:53:11 【问题描述】:

我正在定义一个 Sequelize 模型来映射数据库中现有表中的字段。但是,表中的字段名称很长,对开发人员不友好。

是否可以将数据库字段名称映射到模型定义中的别名,以便我的服务可以使用对开发人员更友好的模型属性名称?

示例:

这...

// Horrible field names
module.exports = (sequelize, DataTypes) =>
  sequelize.define('Transaction', 
    f_curr_finaccount__amount: DataTypes.DECIMAL,
    f_curr_finaccount__tx_type: DataTypes.STRING,
    f_finaccount__currency_iso_id: DataTypes.STRING,
    f_lex_finaccount__tx_atomic_status: DataTypes.STRING
  , 
    schema: 'fins',
    tableName: 'fins_financialaccounttransaction',
    timestamps: false
  )

...变成...

// Developer-friendly field names
module.exports = (sequelize, DataTypes) =>
  sequelize.define('Transaction', 
    amount: 
      type: DataTypes.DECIMAL,
      fieldName: 'f_curr_finaccount__amount'
    ,
    type: 
      type: DataTypes.STRING,
      fieldName: 'f_curr_finaccount__tx_type'
    ,
    currency: 
      type: DataTypes.STRING,
      fieldName: 'f_finaccount__currency_iso_id'
    ,
    status: 
      type: DataTypes.STRING,
      fieldName: 'f_lex_finaccount__tx_atomic_status'
    
  , 
    schema: 'fins',
    tableName: 'fins_financialaccounttransaction',
    timestamps: false
  )

【问题讨论】:

【参考方案1】:

与您所做的完全一样,但属性的名称只是 field。包括外键在内的所有列都是相同的。

// Developer-friendly field names
module.exports = (sequelize, DataTypes) =>
  sequelize.define('Transaction', 
    amount: 
      type: DataTypes.DECIMAL,
      field: 'f_curr_finaccount__amount'
    ,
    type: 
      type: DataTypes.STRING,
      field: 'f_curr_finaccount__tx_type'
    ,
    currency: 
      type: DataTypes.STRING,
      field: 'f_finaccount__currency_iso_id'
    ,
    status: 
      type: DataTypes.STRING,
      field: 'f_lex_finaccount__tx_atomic_status'
    
  , 
    schema: 'fins',
    tableName: 'fins_financialaccounttransaction',
    timestamps: false
  )

【讨论】:

以上是关于Sequelize - 将字段映射到模型定义中的字段别名的主要内容,如果未能解决你的问题,请参考以下文章

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

关联类方法中的现有字段 sequelize

FlaskORM模型创建及数据库映射

Sequelize将日期从UTC转换为本地

14.模型常用字段

ThinkPHP:关于字段映射parseFieldsMap中的变量名