Sequelize many-to-many updating junction table
Sequelize many-to-many updating junction table
我不知道如何用多个 ID 更新联结点 table。所以我想更新一个联结点 table 以便那些缺少 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;
我需要在哪里放置新的 ID 数组,以便那些丢失的离开,并在交界处创建新的 table。还是我先自己删掉不需要的,检查已经存在的再添加新的?
只需使用
await actor.setFilms(filmIds );
它会删除旧的 link 记录并添加新的记录。
我不知道如何用多个 ID 更新联结点 table。所以我想更新一个联结点 table 以便那些缺少 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;
我需要在哪里放置新的 ID 数组,以便那些丢失的离开,并在交界处创建新的 table。还是我先自己删掉不需要的,检查已经存在的再添加新的?
只需使用
await actor.setFilms(filmIds );
它会删除旧的 link 记录并添加新的记录。