首页 > 解决方案 > 使用 Sequelize 和 Express 更新链接表

问题描述

有用户和角色表,它们在 user_roles 中链接。一个用户可以有很多角色。在创建时,我使用 setRoles (array) 来填充关联的 user_roles 表。

User.create(user_data)
    .then(user => {
        user.setRoles([1]).then(() => {
            console.log( "OK" );
        });
    })
    .catch(err => {
        console.log( err.message );
    });

更新用户时会出现问题,因为没有user适用setRoles(array)于它的返回实例。如何添加以下代码来解决此问题?到目前为止,我只看到一种解决方案,即发出单独的请求以获取用户的实例。

PS:Sequelize 文档说.update可以返回一个对象作为第二个参数,但它只适用于 postgres,因此不适合。


User.update(user_data, { where: { id: user_id } })
    .then(num => {
        console.log( "OK" );
    })
    .catch(err => {
        console.log( err.message );
    });
};

标签: sqlexpresssequelize.js

解决方案


如果您使用静态模型update方法,则意味着您可以更新多条记录(假设有 100000 条记录),作为操作结果获取所有更新的记录将是一个非常令人惊讶的、资源和耗时的操作。

你应该得到一个用户模型的实例,正如你在上面的问题中假设的那样,并调用它的updatesetRoles方法。


推荐阅读