Sequelizejs v3でNodejsの結合テーブルでeagerを取得しようとしています。sequelizejs eager many to many
したがって、1つのタグは複数の画像に属し、多くの画像には複数のタグを付けることができます。
タグ1 - > M ImageTag M <から1画像
私は、クエリをexcuteしようとしたとき、私はUnhandled rejection Error: Tag is not associated to ImageDetails
を取得しています。
function getImagesFromAlbum(albumid, callback, errCallback){
ImageDetails.findAll({where: { AlbumId: albumid }, include: [{model: Tag}]}).then((data) => {
return callback(data)
}).catch((err) => {
return errCallback(err)
})
}
期待リターン結果はその画像のassiociateタグをここ
ここ
ImageDetails.belongsToMany(Tag, { as: { singular: "tag", plural: "tags" }, through: { model: ImageTag, unique: false }, foreignKey: "ImageId"})
Tag.belongsToMany(ImageDetails, { as: { singular: "image", plural: "images" }, through: { model: ImageTag, unique: false }, foreignKey: "TagId"})
モデル設計
ある接合関係であり、ALBUMIDに係るデータであるべきですタグモデル
const model = {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
name: {
type: Sequelize.STRING
}
}
const name = "Tag"
ImageTagモデル(表を参加)
const model = {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
}
}
const name = "ImageTag"
ImageDetailsモデル
import { Sequelize, db } from "../config/MySqlConfiguration"
const model = {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true
},
ImageLocation: {
type: Sequelize.STRING
},
originalName: {
type: Sequelize.STRING
}
}
const name = "ImageDetails"
*注sequelize.defineを意図省略されています。