如何描述与 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.
我需要将 Person
和 Language
之间的关系定义为:
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。
我正在尝试在 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.
我需要将 Person
和 Language
之间的关系定义为:
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。