Sequelize模型的编程默认值
问题描述:
如何创建一个在创建Sequelize模型的新实例时以编程方式生成的默认值?我已经阅读过如何在某个地方做到这一点,但无法在任何地方找到它。我认为这与classMethods
有关,但我无法弄清楚应该调用什么方法。Sequelize模型的编程默认值
例如:
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
});
如果你能在正确的方向指向我,将不胜感激。
答
您只需定义默认值的功能,sequelizejs在http://docs.sequelizejs.com/en/v3/api/datatypes/解释,示例代码
sequelize.define('model', {
uuid: {
type: DataTypes.UUID,
defaultValue: function() {
return generateMyId()
},
primaryKey: true
}
})
然而,您无法获取实例,因为在生成defaultValue之前,我们没有实例。
答
只需添加默认值领域模型中的属性,像这样:
sequelize.define('Account', {
name: {
type : DataTypes.STRING,
defaultValue : "account12345"
}
}
我需要以编程方式生成值。默认值不是静态的。我以'account12345'为例。假设'12345'需要是一个随机数或日期或其他东西。在我的例子中,我有一个函数设置'name'属性。 – Brad
哦,sry,所以我认为这可能会帮助你,http://docs.sequelizejs.com/en/latest/docs/hooks/,在创建钩子之前使用。 – cshion