sql - 使用 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 );
});
};
解决方案
如果您使用静态模型update
方法,则意味着您可以更新多条记录(假设有 100000 条记录),作为操作结果获取所有更新的记录将是一个非常令人惊讶的、资源和耗时的操作。
你应该得到一个用户模型的实例,正如你在上面的问题中假设的那样,并调用它的update
和setRoles
方法。
推荐阅读
- c++ - 从 VideoCapture 转换为 Mat 对象后,图像高度减半
- c - C中的fgets函数和文件处理
- mysql - “SELECT * FROM book WHERE year=wyear AND account >= waccount1 AND account <= waccount1”
- python - 如何在 Python 中创建可更新的元组列表?
- excel - 插入行和填充的宏失败
- r - 使用 `readxl` 包对彩色单元格进行分类
- .net - 部署 dotnet 核心应用程序
- processing - 如何不覆盖现有的对象列表?
- asp.net-mvc - 使用服务工作者从服务器获取要缓存的文件列表
- java - 谷歌支付 isReadyToPay 方法返回 false