让连接表如下:
User
有很多 UserAnswer
有很多 Answer
其中UserAnswer
是联结表。
还有2个表:Session
和Question
这样:
Session
has_many UserAnswer
有很多Answer
Question
有很多 UserAnswer
有很多Answer
UserAnswer然后应该具有4个外键:UserId, AnswerId, QuestionId, SessionId
。
为了在Sequelize中实现这一点,我添加了
Model.belongsToMany(AppropriateModel, {
through: 'UserAnswer'
});
其中Model
和AppropriateModel
根据每个模型中定义的关系被各自的模型名称替换,但是运行脚本后,将生成以下查询:
CREATE TABLE IF NOT EXISTS `UserAnswer` (
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NOT NULL,
`UserId` INTEGER ,
`AnswerId` INTEGER , PRIMARY KEY (`UserId`, `AnswerId`),
FOREIGN KEY (`UserId`) REFERENCES `Users` (`id`)
ON DELETE CASCADE ON UPDATE CASCADE,
FOREIGN KEY (`AnswerId`) REFERENCES `Answers` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
我猜它选择了User和Answer表,因为这些表的关联首先在脚本中定义。我应该怎么做才能使Sequelize也能容纳Session
和Answer
表?
一种方法是为UserAnswer
创建一个单独的模型,但我不想这样做。还有其他方法可以实现吗?