Orm 如何用Sequelize models对象描述遗留表一对多连接?

Orm 如何用Sequelize models对象描述遗留表一对多连接?,orm,sequelize.js,one-to-many,belongs-to,has-one,Orm,Sequelize.js,One To Many,Belongs To,Has One,我正在尝试使用遗留表,并坚持如何在Sequelize的模型中定义数据库的连接 我有以下表格: pesons: +----+---------+-------------+ | id | name | language_id | +----+---------+-------------+ | 1 | Anatoly | 1 | | 2 | Roman | 2 | | 3 | Pavel | 1 | +----+---

我正在尝试使用遗留表,并坚持如何在Sequelize的模型中定义数据库的连接

我有以下表格:

pesons

+----+---------+-------------+
| id |  name   | language_id |
+----+---------+-------------+
|  1 | Anatoly |           1 |
|  2 | Roman   |           2 |
|  3 | Pavel   |           1 |
+----+---------+-------------+
+----+---------+
| id |  value  |
+----+---------+
|  1 | English |
|  2 | Hebrew  |
|  3 | Russian |
+----+---------+

语言

+----+---------+-------------+
| id |  name   | language_id |
+----+---------+-------------+
|  1 | Anatoly |           1 |
|  2 | Roman   |           2 |
|  3 | Pavel   |           1 |
+----+---------+-------------+
+----+---------+
| id |  value  |
+----+---------+
|  1 | English |
|  2 | Hebrew  |
|  3 | Russian |
+----+---------+
正如您所看到的,每个
都可以知道一种
语言
,但不同的
人可以知道相同的
语言

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
})
根据官方手册:

当源模型中存在关联信息时,我们可以 使用belongsTo

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

Person.belongsTo(Language);
但在我看来这是错误的,而且是违反直觉的,所以我想从某人那里得到一些澄清


另外,为了清楚起见,我以前从未使用过任何ORM。

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

所以有多对多的关联,所以我们做多对多的关联

但是对于您的用例,请将您的场景重新表述为

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

属于和有许多必须成对使用,因为它们是相对的部分

所以首先

Language.hasMany(Person)
orm将向语言中添加所有必要的实例和类方法,以便您可以轻松地查询、添加和删除语言中的人员

第二部分

Person.belongsTo(Language) 

orm将向Persons添加所有必需的实例和类方法,以便您可以方便地查询、添加和删除person的语言。

因此,我需要
语言.hasMany(person)
,和
person.belongsTo(Language)
使其工作?是的,例如如果您不使用Language.hasMany(person)那么你就不能学习语言了