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

时间:2019-06-12 22:26:35

标签: javascript node.js model sequelize.js

我正在定义一个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 个答案:

答案 0 :(得分: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
  })