我有两个实体(表):用户和角色。两个实体之间存在多对一关系(一个用户可以有一个角色,角色可以与多个用户相关)。现在,我想通过执行以下命令来更新用户实体(还可以包括用户角色的更新):
const user = await this.userRepository.preload(partialUser);
await this.userRepository.save(user);
return user;
Run Code Online (Sandbox Code Playgroud)
partialUser (要更新的用户属性)与数据库中的用户数据合并,包括 roleuser (合并的对象)保存到数据库role加载(但如果我将子属性添加role到partialUser,则可以)user(合并的对象)保存到数据库(role如果是的一部分,也保存到数据库partialUser)为什么role不通过via preload或returnafter 加载save?TypeORM存储库是不是为建立关系而设计的不好,还是我使用不正确?
目前,我必须user在保存完实体后再次读取整个实体,以便可以将完整的对象(包括role关系)返回给调用者。我认为那不是很有效。打算那样吗?
const user = await this.userRepository.preload(partialUser);
await this.userRepository.save(user);
return this.userRepository.findOne({
where: { id: user.id },
relations: ['role']
});
Run Code Online (Sandbox Code Playgroud)
TypeORM 支持此类用例。这是使用急切加载标志完成的,即eager: true您可以将其设置为关系。现在,每次获取此记录时,都会默认获取该关系并在响应中返回。您可以在用户模型中使用的示例代码:
@ManyToMany(type => Role, role => role.User, {
eager: true
})
public roles: Role[];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
945 次 |
| 最近记录: |