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" 
} 
} 
+1

我需要以编程方式生成值。默认值不是静态的。我以'account12345'为例。假设'12345'需要是一个随机数或日期或其他东西。在我的例子中,我有一个函数设置'name'属性。 – Brad

+0

哦,sry,所以我认为这可能会帮助你,http://docs.sequelizejs.com/en/latest/docs/hooks/,在创建钩子之前使用。 – cshion