我有两个实体(表):用户和角色。两个实体之间存在多对一关系(一个用户可以有一个角色,角色可以与多个用户相关)。现在,我想通过执行以下命令来更新用户实体(其中还可以包括用户角色的更新):
const user = await this.userRepository.preload(partialUser);
await this.userRepository.save(user);
return user;
partialUser
(要更新的用户属性)与数据库中包含role
的用户数据合并user
(合并的对象)已保存到数据库role
(但如果我向role
添加子属性partialUser
,就可以了)user
(合并对象)保存到数据库(如果它是role
的一部分,也保存到数据库{1>)为什么partialUser
之后role
既不通过preload
也不通过return
加载? TypeORM存储库是不是为建立关系而设计的不好,还是我使用不正确?
此刻,我必须在保存整个save
实体后再次读取它,以便可以将完整的对象(包括user
关系)返回给调用者。我认为那不是很有效。是这样吗?
role
答案 0 :(得分:1)
TypeORM支持此类用例。您可以使用预加载标志(即eager: true
)来完成此操作,您可以将其设置为该关系。现在,每次获取该记录时,默认情况下都会获取该关系并在响应中返回。您可以在用户模型中使用的示例代码:
@ManyToMany(type => Role, role => role.User, {
eager: true
})
public roles: Role[];