Sequelize 4 - 在eagger loading

时间:2017-08-09 21:51:03

标签: mysql node.js sequelize.js sequelize-cli

嗨伙计,我有这两个模型:

const media = sequelize.define('media', {
              id: { type: Sequelize.UUID, primaryKey: true, defaultValue: Sequelize.UUIDV4 },
              name: { type: Sequelize.STRING, allowNull: false, unique:'compositeIndex' },}, { freezeTableName: true });

const mediaGenre = sequelize.define('mediaGenre', {
                  id: { type: Sequelize.UUID, primaryKey: true, defaultValue: Sequelize.UUIDV4 }}, { freezeTableName: true, name: { plural: 'mediaGenre' } });

和这两个关系:

media.hasMany(mediaGenre, as: 'mGenre');
mediaGenre.belongsTo(media);

media.belongsToMany(genre, { through: mediaGenre });
genre.belongsToMany(media, { through: mediaGenre });

当我想创建媒体时:

MediaModels.media.create(
            {name: 'Hulk',
            mediaGenre: [
            { genreId: '021baab5-7fc6-4b06-aca5-e4b1ed1f3ce4' },
            { genreId: '03f069a4-dc52-4ab5-82d3-6bcd67d2d29e' }]},
            {
                include: [
                    {model: MediaModels.mediaGenre, as: 'mGenre'}
                ]
            }
        );

这些一直在与sequ​​elize 3合作,最近我更新到续集4.4.2并没有抛出错误,但表媒体没有填充它。

有什么可能是错误的想法?

1 个答案:

答案 0 :(得分:0)

您引用关联后是否尝试过同步?我遇到了这个问题,当我调用同步时(强制错误,如果你不想删除你的模式并重新创建,这很重要),就创建了联结表。

如果您使用的是sequelize-cli,请注意,在此版本中,不再支持classMethods。相反,您应该将名为associate的方法直接添加到模型中,该方法将在models / index.js中调用。