如何描述与 Sequelize 模型对象的遗留 table 一对多连接?

How to describe legacy table one-to-many connection with Sequelize models object?

我正在尝试在 Sequelize 的模型中使用 Sequelize with legacy table and stuck how to define one-to-many 我的数据库连接。

我有以下表格:

:

+----+---------+-------------+
| id |  name   | language_id |
+----+---------+-------------+
|  1 | Anatoly |           1 |
|  2 | Roman   |           2 |
|  3 | Pavel   |           1 |
+----+---------+-------------+

语言:

+----+---------+
| id |  value  |
+----+---------+
|  1 | English |
|  2 | Hebrew  |
|  3 | Russian |
+----+---------+

如你所见,每个 Person 可以知道一个 Language 但相同的 Language 可以被不同的 Persons.

知道
var Person = sequelize.define('person', {
    id : {
        field: 'id',
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    name : {
        field: 'name',
        type: Sequelize.TEXT
    }
},{
    tableName: 'persons',
    timestamps: false
});


var Language = sequelize.define('language', {
    id : {
        field: 'id',
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    value : {
        field: 'value',
        type: Sequelize.TEXT
    }
},{
    tableName: 'languages',
    timestamps: false
})

根据官方手册:Difference between HasOne and BelongsTo

When information about association is present in source model we can use belongsTo.

我需要将 PersonLanguage 之间的关系定义为:

Person.belongsTo(Language);

但这对我来说似乎是错误的并且违反直觉,所以我想从某人那里得到一些澄清。

P.S。为了清楚起见,我以前从未使用过任何 ORM。

在通常情况下,每个人都可以知道多种语言,但不同的人可以知道同一种语言

所以有多对多关联所以我们做多对多关联 http://docs.sequelizejs.com/en/latest/docs/associations/#nm

但对于您的用例,请将您的香味改写为

语言有很多人(用户),所以这里有一对多的关联,没有一个关联的部分。

属于并且有很多必须成对使用,因为它们是对应的零件

所以首先

Language.hasMany(Person)

orm将所有必需的实例和class方法添加到语言中,以便您可以方便地查询、添加和删除一个人到一个语言。

第二部分

Person.belongsTo(Language) 

orm会为Persons添加所有必需的实例和class方法,方便您查询、添加和删除一个人的Language。