在 sequelize 中关联引用 table

Associating a reference table in sequelize

我有几个 table 试图在 Sequelize 中关联——一个 jobaids_sections_messages table 包含用户输入的消息,一个 jobaids_sections_messages_levels table 这是消息 table 使用的静态引用。他们是这样设置的

this.jobaidMessage = sequelize.define('jobaids_sections_messages', {
    message: Sequelize.STRING,
    attuid: Sequelize.STRING,
    level: Sequelize.INTEGER
}, {
    paranoid: true
});

this.jobaidMessageLevel = sequelize.define('jobaids_sections_messages_levels', {
    name: Sequelize.STRING
}, {
    timestamps: false
});

jobaids_sections_messages_levelstable设置如下:

| id  |   name   |
| --- | -------- |
| 1   | Critical |
| 2   | Major    |
| 3   | Warning  |
| 4   | Info     |

我想做的是,当我创建一条新消息时,我可以将 level 作为键传递给 jobaids_sections_messages_levels table,并且在检索消息时,我得到的水平是

{
    ...
    level: {
        id: 2,
        name: 'Major'
    }
}

我应该如何在这里设置我的关联?到目前为止,我有

this.jobaidMessageLevel.belongsTo(this.jobaidMessage, {
    foreignKey: 'level'
});

虽然我不确定这个关联的逆转。会是某种 "many-to-one" 关系吗?

谢谢!

您的消息只有一个级别,从技术上讲,您的级别可以有很多消息。因此,只需说明您的消息 hasOne 级别即可完成所需的关联。然后,当您下拉一条消息并包含该级别时,它会回来。

this.jobaidMessage.hasOne(this.jobaidMessageLevel, {
    foreignKey: 'levelId'
});