Sequelize을 레거시 테이블과 함께 사용하려고하고 Sequelize` 모델에서 내 데이터베이스의 연결을 one-to-many 연결로 정의하는 방법을 고집했습니다. Sequelize 모델 객체와의 레거시 테이블 일대 다 연결을 설명하는 방법은 무엇입니까?
I가 다음과 같은 테이블 :pesons :
+----+---------+-------------+
| 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
})
:
연결에 대한 정보는 우리가 할 수있는 사용 belongsTo를 소스 모델에 존재 Difference between HasOne and BelongsTo.
나는대로 Person
및 Language
사이의 관계를 정의해야
Person.belongsTo(Language);
그러나 그것은 저와 직관적 인 카운터 잘못 보이는, 그래서 누군가로부터 어떤 설명을 좀하고 싶습니다.
P. 명확하게하기 위해, 나는 전에 어떤 ORM도 사용한 적이 없습니다. 그것은 모든 사람이 많은 언어하지만, 같은 언어를 알 수있을 것입니다 일반적인 경우
그래서, 작동시키기 위해서'Language.hasMany (Person)'과'Person.belongsTo (Language)'가 필요합니다. – Anatoly
네, 예를 들어 Language.hasMany (Person)을하지 않으면 language.getPersons()를 할 수 없을 것입니다. –