Sequelize-在表上添加其他外键

时间:2019-01-31 18:00:15

标签: javascript mysql sequelize.js

让连接表如下:

User 有很多 UserAnswer 有很多 Answer

其中UserAnswer是联结表。

还有2个表:SessionQuestion这样:

Session has_many UserAnswer有很多Answer
Question 有很多 UserAnswer有很多Answer

UserAnswer然后应该具有4个外键:UserId, AnswerId, QuestionId, SessionId

为了在Sequelize中实现这一点,我添加了

Model.belongsToMany(AppropriateModel, {
    through: 'UserAnswer'
});

其中ModelAppropriateModel根据每个模型中定义的关系被各自的模型名称替换,但是运行脚本后,将生成以下查询:

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也能容纳SessionAnswer表?

一种方法是为UserAnswer创建一个单独的模型,但我不想这样做。还有其他方法可以实现吗?

0 个答案:

没有答案