2014-02-22 28 views
1

我有如下實體:困惑sequelize協會一位一對多和一對一的一個單向

  • 用戶(姓名,電子郵件,密碼)
  • 目標(標題,描述)
  • 照片(文件名,路徑,則contentType)
  • GoalPhoto(fk_goal,fk_photo)

用戶的hasMany目標 - 它工作正常。外鍵添加到目標表
用戶擁有一張照片 - 不起作用。
目標在連接表模型GoalPhoto上有許多照片 - 不起作用。

該照片與用戶和目標沒有任何關聯,但用戶和目標實體分別具有一對一和一對多。照片不屬於任何型號。

當我把User.hasOne(照片)它創建照片表中的外鍵,但我只想在用戶(fk_photo)一個外鍵。 當我把Goal.hasMany(照片,{as:'photos',joinTableModel:GoalPhoto,foreignKey:'fk_goal'})它創建照片表中的外鍵,但我想要一個與目標和照片外鍵的JoinTable。

我該如何解決這個問題?

回答

1

在用戶表創建外鍵(photo_id):

User = sequelize.define('User', {}); 
Photo = sequelize.define('Photo', {}); 
Photo.hasOne(User); 
User.belongsTo(Photo); 

創建JoinTable:

GoalPhoto = sequelize.define('GoalPhoto', {}); 
Goal.hasMany(Photo, {through: GoalPhoto}); 
Photo.hasMany(Goal, {through: GoalPhoto}); 
+1

是的,它的作品,但因爲照片沒有一個用戶這聽起來有點怪,但用戶有一張照片。 –

+1

http://sequelizejs.com/docs/latest/associations#block-14-line-22 你可以這樣做: photo_id:{type:DataTypes.INTEGER,references:「Photo」,referencesKey:「id」} – ahiipsa