【问题标题】:Sequelize 4 - belongs-To-Many insert issue on eagger loadingSequelize 4 - 急切加载时的 belongsToMany 插入问题
【发布时间】:2018-01-17 23:06:35
【问题描述】:

大家好,我有这两种型号:

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'}
                ]
            }
        );

这些一直在使用 sequelize 3,最近我更新到了 sequelize 4.4.2,它没有抛出错误,但表格 mediaGenre 没有被填充。

对可能是什么错误有任何想法吗?

【问题讨论】:

  • 您是否尝试引用association?看看这个:docs.sequelizejs.com/manual/tutorial/…。我认为自 3.x.x 以来语法略有变化。如果你愿意,我可以准备一个更详细的答案:)。
  • 是的,我也试过了

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


【解决方案1】:

您是否在引用关联后尝试同步?我遇到了这个问题,当我调用同步时(如果你不想删除你的架构并重新创建,这很重要,这很重要),连接表被创建。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2018-03-18
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    • 2019-11-23
    相关资源
    最近更新 更多