使用 Sequelize 和 Express 更新链接 table

Updating a linked table with Sequelize and Express

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

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

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

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


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

如果您使用静态模型 update 方法,这意味着您可以更新多条记录(假设有 100000 条记录),将所有更新的记录作为运算结果。

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