Sequelize 模型的编程默认值

Programmatic default value for Sequelize model

如何创建在创建 Sequelize 模型的新实例时以编程方式生成的默认值?我已经在某处阅读了如何执行此操作,但无法在任何地方找到它。我认为这与 classMethods 有关,但我不知道应该调用什么方法。

例如:

sequelize.define('Account', {
  name: DataTypes.STRING
}, {
  classMethods: {
    something: function (instance) {
      instance.name = 'account12345';
    }
  }
});

models.account.create(function (account) {
  console.log(account.name); // Echos "account12345" or whatever I
});

如果你能指出正确的方向,我将不胜感激。

你可以直接将defaultValue定义为函数,sequelizejs在http://docs.sequelizejs.com/en/v3/api/datatypes/中解释,示例代码是

sequelize.define('model', {
  uuid: {
    type: DataTypes.UUID,
    defaultValue: function() {
      return generateMyId()
    },
    primaryKey: true
  }
})

但是,您无法获取实例,因为在生成 defaultValue 之前我们没有实例。