2015-02-10 104 views
6

我正在使用遷移來創建實體。當然,有些人有他們之間的關係。到目前爲止,通過使用sync(true),我享受了Sequelize在數據庫級實現關係的好處。如何在Sequelize遷移中創建關聯?

如何在遷移中表達新關係?

  1. 一對多:我應該照顧外鍵列嗎?
  2. 多對多:我應該創建中間表並在每個實體的表上設置外鍵嗎?

或者:我應該運行遷移,然後sync(false)? 那些不再相關的關係呢?

回答

3

當我使用遷移,我設置sync:false。

併成立協會,我的模式結束了,像這樣:

user.js的:

module.exports = function(sequelize, DataTypes) { 
    var User = sequelize.define("User", { 
     "fname": { 
      "type": DataTypes.STRING, 
      "unique": false, 
      "allowNull": false 
     }, 
     "lname": { 
      "type": DataTypes.STRING, 
      "allowNull": false 
     } 
    }, { 
     "tableName": "Users", 
     "classMethods": { 
      "associate": function (models) { 
       Locale.hasMany(models.Permissions); 
      } 
     } 
    }); 

    return User; 
}; 

這仍然將創建表,如果它不存在。不過,我建議創建一個表格仍然是遷移的一部分。請注意,在您的遷移中創建一個表以包含id,updatedAt,createdAt和PermissionId列(對於上面的示例)