2017-05-02 56 views
1

我有兩種模式,視頻和幀。續訂一對一的關係

Frame.belongsTo(models.Video); 
Video.hasMany(models.Frame, { as: "Frames" }); 

我現在需要一種方法來指定視頻的第一幀和最後一幀,但無法使其工作。

我嘗試這樣做:

Video.hasOne(Frame, { as: "FirstFrame" }); 
Video.hasOne(Frame, { as: "LastFrame" }); 

但在框架表,而不是影片表中創建FirstFrameId和LastFrameId。我需要有video.get/setFirstFrame()和video.get/setLastFrame()函數可用。我怎樣才能做到這一點?

回答

1

您不需要首先設置belongsTo和hasMany。取決於你的數據庫模式,只使用一個。

對於獲得FirstFrameId和LastFrameId在影片模式,你需要使用:

Video.belongsTo(Frame, {as: 'FirstFrame'}); 
Video.belongsTo(Frame, {as: 'LastFrame'}); 

這是指定的Sequelize文檔,你可以檢查它here

「即使它被稱爲一個HasOne關聯,對於大多數1:1關係 您通常需要BelongsTo關聯,因爲BelongsTo將在hasOne將添加到目標上的源上添加 外鍵。「