【问题标题】:Auto-populated field in a Sequelize Model?Sequelize 模型中的自动填充字段?
【发布时间】:2020-05-07 22:03:58
【问题描述】:

我正在为 MySQL 中的“用户”表创建模型。理想情况下,我希望有一个“firstName”和“lastName”字段以及一个“fullName”,这将是另外两个的添加。 是否可以在模型中以编程方式进行处理,还是我必须在 INSERT 时处理它?

const User = sequelize.define("users", {
  id: {
    type: Sequelize.INTEGER,
    autoIncrement: true,
    allowNull: false,
    primaryKey: true,
  },
  firstName: {
    type: Sequelize.STRING(50),
    allowNull: false,
  },
  lastName: {
    type: Sequelize.STRING(50),
    allowNull: false,
  },
  fullName: {
    type: Sequelize.STRING(50),
    allowNull: false,
    // something that makes 'firstName' + ' ' + 'lastName' ❤️

  },
  email: {
    type: Sequelize.INTEGER(30),
    allowNull: false,
  },
});

【问题讨论】:

    标签: mysql node.js database model sequelize.js


    【解决方案1】:

    Virtual Colums 正是您要找的。​​p>

    “虚拟”列是不会保存在数据库中的列 - 它们是根据其他列的值动态计算的。如果我们想在实例上使用可以轻松计算的值,它们有助于节省空间。

        const User = sequelize.define("users", {
          id: {
            type: Sequelize.INTEGER,
            autoIncrement: true,
            allowNull: false,
            primaryKey: true,
          },
          firstName: {
            type: Sequelize.STRING(50),
            allowNull: false,
          },
          lastName: {
            type: Sequelize.STRING(50),
            allowNull: false,
          },
           fullName: {
             type: DataTypes.VIRTUAL,
             get() {
                   return `${this.firstName} ${this.lastName}`;
             }
          },
          email: {
            type: Sequelize.INTEGER(30),
            allowNull: false,
          },
        });
    

    更多信息见virtual fields.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多