2017-05-02 7 views
1

ビデオとフレームという2つのモデルがあります。1対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を設定する必要はありません。 dbスキーマに応じて1つだけを使用してください。あなたが使用する必要があるビデオモデルにFirstFrameIdとLastFrameIdを取得

の場合:

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

これはSequelizeドキュメントに指定され、あなたは確認することができ、それが呼び出されていてもhere

」ほとんどの1:1の関係のためのHasOneの関連付け BelongsToは のhasOneがターゲットに追加するソースにforeignKeyを追加するので、通常はBelongsToの関連付けが必要です。

関連する問題