2017-05-10 14 views
0

オブジェクトの親テーブル情報を探したいと思います。sequelize子から親テーブルを見つける

私はユーザーhasMany Book を持っています。ここでBookはライターを持ち、ユーザー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' 

} 

ブックはいくつかのより多くの子テーブルを持っていると私は含んでこれらの追加情報を検索しようとするので、私は、私は本当にする必要が推測するためのいくつかのコードですfind from Book.findAll(...) User.findAllの代わりに(include:Book)

誰でも手助けできますか?

答えて

0

私は間違いをしていたと思います。できるだけ早く私は

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

belongsToのために働いている含めることが

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

を変更するよう

。それは子供から親を見つける。 モデルに宣言された複数のプライマリキーがある場合、Sequelizeは関係に何らかの問題を抱えているようです...

これはあなたの問題を解決すると思われる人は誰でも、私はもっと確信できます。

ありがとうございました。

+0

Sequelizeのルールは非常に簡単です 複数のプライマリで複雑なインクルードモデル間の行の区別が可能ですが、2つのテーブル間で1つの外部キーのみが許可されます。複数ある場合は、それは夢中になるだろう –

関連する問題