【问题标题】:Sequelize many-to-many updating junction tableSequelize 多对多更新联结表
【发布时间】:2022-01-07 12:41:29
【问题描述】:

我看不到如何更新具有多个 id 的联结表。所以我想更新一个联结表,以便那些缺少 id 的行离开,并创建新的。

这是我的设置

  ActorFilm.belongsTo(models.Actor, { foreignKey: 'actorId', targetKey: 'id' });
  ActorFilm.belongsTo(models.Film, { foreignKey: 'filmId', targetKey: 'id' });

  Actor.belongsToMany(models.Film, { through: models.ActorFilm, foreignKey: 'actorId' });

  Film.belongsToMany(models.Actor, { through: models.ActorFilm, foreignKey: 'filmId' });

这就是我添加新演员的方式:

    const actor= await Actor.create({
        userId: userId,
        title: title,
        description: description
    });

    if (filmIds && filmIds.length) {
        await actor.setFilms(filmIds );
        const actorWithFilms = Actor.findByPk(actor.id, { include: Film });
        return actorWithFilms ;
    }
    
    return actor;

我想像这样更新 Actor:

   const editedActor = await Actor.update({
        title: title,
        description: description,
    }, {
        where: {
            id: actorId
        },
        returning: true,
    });

    return editedActor;

我需要在哪里放置新的 ids 数组,以便那些丢失的离开,并在联结表中创建新的。还是我应该先自己删除不需要的,检查已经存在的并添加新的?

【问题讨论】:

  • 调用await actor.setFilms(filmIds );还不够删除旧电影链接并添加新链接吗?
  • @Anatoly Strange 但最初它对我不起作用,现在我决定再试一次,一切正常,谢谢!!!

标签: javascript node.js express sequelize.js sequelize-cli


【解决方案1】:

随便用

await actor.setFilms(filmIds );

它删除旧的链接记录并添加新的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-15
    • 2021-09-15
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多