Nodejs中sequelize如何对一对多,多对多模型进行增删改的操作?

Nodejs中sequelize如何对一对多,多对多模型进行增删改的操作?

有没有一些浅显易懂的例子?

3 回复

刚接触 sequelize 不久

一对多就直接先 create 明细 然后绑定主表 id

多对多 model.prototype.setXXXs(xxxIds)


sequelize 关联关系太麻烦了,我已经全面使用 knexjs ,还不错。

在Node.js中使用Sequelize进行一对多(One-to-Many)和多对多(Many-to-Many)关系的增删改操作,可以通过定义模型关系(Association)和相应的方法来实现。以下是基本的代码示例:

一对多(One-to-Many)

假设有 UserPost 两个模型,一个用户可以有多篇文章。

定义模型关系

User.hasMany(Post, { foreignKey: 'userId' });
Post.belongsTo(User, { foreignKey: 'userId' });

增加

const user = await User.create({ name: 'John' });
await user.createPost({ title: 'First Post' });

删除

await Post.destroy({ where: { id: postId } });

更新

await Post.update({ title: 'Updated Post' }, { where: { id: postId } });

多对多(Many-to-Many)

假设有 UserRole 两个模型,一个用户可以有多个角色,一个角色也可以分配给多个用户。

定义模型关系

User.belongsToMany(Role, { through: 'UserRole' });
Role.belongsToMany(User, { through: 'UserRole' });

增加

await user.addRole(role);

删除

await user.removeRole(role);

更新(需先删除再重新关联)

await user.setRoles([newRole]);

以上示例展示了基本的增删改操作,实际应用中需根据具体需求处理事务和错误。

回到顶部