2015-07-11 60 views
3

如何創建一個在創建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 
}); 

如果你能在正確的方向指向我,將不勝感激。

回答

3

您只需定義默認值的功能,sequelizejs在http://docs.sequelizejs.com/en/v3/api/datatypes/解釋,示例代碼

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

然而,您無法獲取實例,因爲在生成defaultValue之前,我們沒有實例。

-2

只需添加默認值領域模型中的屬性,像這樣:

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