Sequelize:如何在数据透视表中映射自定义属性

时间:2016-03-25 07:59:57

标签: mysql node.js sequelize.js

我有这个数据透视表,它表示与人物和电影模型的多对多关系。

Pivot table schema

事情是,当我打电话给那些让人联系起来的电影时,我想得到这个角色。我尝试了这个,但它没有显示角色:

role

我是否必须在模型中为name

指定一些内容

2 个答案:

答案 0 :(得分:5)

我终于设法通过为movie_person属性作为字符串创建数据透视表role的模型来实现此目的。

var MoviePerson = sequelize.define("MoviePerson", {
    role: DataTypes.STRING
},
{
    tableName: 'movie_person',
    underscored: true
});

然后在我的Movie模型中添加了此

Movie.belongsToMany(models.Person, {
    through: models.MoviePerson,
    foreignKey: 'movie_id',
    as: 'persons'
});

我必须在我的Person模型中做一些与此类似的事情,就是这样!

答案 1 :(得分:0)

对于那些将需要此工具的人,有一种称为“魔术方法”的新方法。我相信您已经宣布了您的多对多协会


    const movies = Movie.findAll();
    const person = Person.findbyPk(personId);
    const moviesPerson = movies.getPersons(person);