Sequelize一对一关系

3

我有两个模型,Video(视频)和Frame(帧)。

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

我现在需要一种指定视频的第一帧和最后一帧的方法,但是无法使其工作。

我尝试了以下方法:

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

但这样会在Frames表中创建FirstFrameId和LastFrameId而不是Videos表。我需要video.get/setFirstFrame() 和 video.get/setLastFrame()函数。如何实现这个功能?
1个回答

8

你不需要像刚开始所展示的那样同时设置belongsTo和hasMany,根据你的数据库架构只需要使用其中一个即可。

如果想要在视频模型中获取FirstFrameId和LastFrameId,你需要使用以下代码:

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

这是在Sequelize文档中的说明,您可以在此处查看:here “虽然它被称为HasOne关联,但对于大多数1:1关系,您通常希望使用BelongsTo关联,因为BelongsTo将在源上添加外键,而hasOne将在目标上添加。”

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接