2017-05-10 4 views
0

개체의 부모 테이블 정보를 찾고 싶습니다.자식에서 부모 테이블 찾기를 sequelize

나는 사용자 hasMany 도서 을 보유하고 있습니다. 여기서는 작가가 있으며 사용자 ID에 할당되어 있습니다. 도서에 판타지, 로맨스, 역사, 과학 소설 ... 등이있는 유형이 있습니다.

그래서 과학 소설 유형의 책을 찾고 싶습니다. 그뿐 아니라 작가도 필요합니다. 사용자.

어디서 책을 볼 수 있습니까? Book.findAll (include : User)의 'include'가 작동하지 않는 것 같습니다. 이것은 include가 부모가 아닌 자식 테이블을 찾는데 만 작동한다는 것을 알려줍니다. 여기

사용자

const User = sequelize.define('User', { 
    id: { type: DataTypes.STRING(6), field: 'ID', primaryKey : true } 
} 
associate: function(models) { 
     User.hasMany(models.Book, { foreignKey: 'userId' }); 
} 

및 도서에 대한 몇 가지 코드입니다

const Book = sequelize.define('Book', { 
    id: { type: DataTypes.STRING(6), field: 'ID', primaryKey: true }, // primary key 
    userId: { type: DataTypes.STRING(6), field: 'USER_ID', primaryKey: true } 
type: { type: DataTypes.STRING(20), field: 'TYPE' 

} 

책은 좀 더 자식 테이블을 가지고 있는데에 포함하는 추가 정보를 찾을려고, 그래서 내가 정말 필요 추측 Book.findAll (...) 에서 찾아내는 대신 User.findAll (포함 : 도서).

아무도 도와 줄 수 있습니까?

답변

0

실수를 저질렀다고 생각합니다. 최대한 빨리

userId: { type: DataTypes.STRING(6), field: 'USER_ID' } 

belongsTo를 위해 일하고 포함

userId: { type: DataTypes.STRING(6), field: 'USER_ID', primaryKey: true } 

변경으로

; 아이로부터 부모를 찾습니다. 두 개 이상의 기본 키가 모델에 선언 된 경우 Sequelize에 관계가있는 것처럼 보입니다 ...

누군가가이 문제가 해결된다고 생각하는 경우 답장을 보내 주시면보다 확실하게 알려 드리겠습니다.

감사합니다.

+0

죄송합니다. Sequelize의 규칙은 매우 간단합니다. 다중 기본 모델은 복잡한 포함 모델 간의 행 구분을 허용하지만 두 테이블간에 하나의 외래 키만 허용됩니다. 둘 이상이 있다면, 그것은 미친 듯이 갈 것입니다. –