续订一对一的关系
我有两个模型,video和帧。
Frame.belongsTo(models.Video); Video.hasMany(models.Frame, { as: "Frames" });
我现在需要一种方法来指定一个video的第一帧和最后一帧,但不能得到它的工作。
我试过这个:
Video.hasOne(Frame, { as: "FirstFrame" }); Video.hasOne(Frame, { as: "LastFrame" });
但是这会在“帧”表中创buildFirstFrameId和LastFrameId,而不是“video”表。 我需要有video.get / setFirstFrame()和video.get / setLastFrame()函数可用。 我怎样才能做到这一点?
首先你不需要设置belongsTo和hasMany。 根据你的数据库模式,只使用一个。
要获得video模型上的FirstFrameId和LastFrameId,您需要使用:
Video.belongsTo(Frame, {as: 'FirstFrame'}); Video.belongsTo(Frame, {as: 'LastFrame'});
这是在Sequelize文档中指定的,你可以在这里查看
“即使它被称为HasOne关联,对于大多数1:1关系,通常也需要BelongsTo关联,因为BelongsTo将在hasOne将添加到目标上的源上添加外键。