无法读取未定义的属性(读取 'concat')
Cannot read properties of undefined (reading 'concat')
Roles entity has many-many relation with entitlement entity as shown below:
@ManyToMany(() => Entitlement)
@JoinTable({
name: 'role-entitlements',
joinColumn: {
name: 'role_id',
referencedColumnName: 'id',
},
inverseJoinColumn: {
name: 'entitlement_id',
referencedColumnName: 'id',
},
})
entitlements: Entitlement[];
下面给出的是向角色添加多个权利的函数:
async linkEntitlement(id: string, linkEntitlementDto: LinkEntitlementDto) {
const role: Role = await this.findOne(id);
if (!role) {
throw new CustomException('role not found');
}
const entitlement: Entitlement = await this.entitlementService.findOne(
linkEntitlementDto.entitlementId,
);
if (!entitlement) {
throw new CustomException('entitlement not found');
}
const entitlements: Entitlement[] = role.entitlements;
role.entitlements = entitlements.concat(entitlement);
await this.rolesRepository.save(role);
}
下面给出的是 json 我试图通过 Postman post 的内容:
{
"entitlements":[
{"id":"12d7b37e-1464-4ffa-b9af-779ab298afb9"}
]
}
我收到上面提到的错误
我在这里要做的是有一个角色实体和一个权利实体。我
在角色和权利之间创建了多对多关系。我创建了一个函数
LinkEntitlement,我可以在其中映射角色和权利。我正在 post 通过
postman here 但我遇到了这样的错误。我能改变什么
代码?below is the postman image
entitlements
是 undefined
因为您没有获取与 Entitlement 的关系,默认情况下它是延迟加载的。
这样做:
const role = await this.findOne(id, { relations: ['entitlements'] });
顺便说一句,我建议您将该字段 entitlements: Entitlement[]
标记为可选。这样你就不会对为什么 TypeScript 告诉你某些东西在运行时不是 undefined
感到困惑。
Roles entity has many-many relation with entitlement entity as shown below:
@ManyToMany(() => Entitlement)
@JoinTable({
name: 'role-entitlements',
joinColumn: {
name: 'role_id',
referencedColumnName: 'id',
},
inverseJoinColumn: {
name: 'entitlement_id',
referencedColumnName: 'id',
},
})
entitlements: Entitlement[];
下面给出的是向角色添加多个权利的函数:
async linkEntitlement(id: string, linkEntitlementDto: LinkEntitlementDto) {
const role: Role = await this.findOne(id);
if (!role) {
throw new CustomException('role not found');
}
const entitlement: Entitlement = await this.entitlementService.findOne(
linkEntitlementDto.entitlementId,
);
if (!entitlement) {
throw new CustomException('entitlement not found');
}
const entitlements: Entitlement[] = role.entitlements;
role.entitlements = entitlements.concat(entitlement);
await this.rolesRepository.save(role);
}
下面给出的是 json 我试图通过 Postman post 的内容:
{
"entitlements":[
{"id":"12d7b37e-1464-4ffa-b9af-779ab298afb9"}
]
}
我收到上面提到的错误 我在这里要做的是有一个角色实体和一个权利实体。我 在角色和权利之间创建了多对多关系。我创建了一个函数 LinkEntitlement,我可以在其中映射角色和权利。我正在 post 通过 postman here 但我遇到了这样的错误。我能改变什么 代码?below is the postman image
entitlements
是 undefined
因为您没有获取与 Entitlement 的关系,默认情况下它是延迟加载的。
这样做:
const role = await this.findOne(id, { relations: ['entitlements'] });
顺便说一句,我建议您将该字段 entitlements: Entitlement[]
标记为可选。这样你就不会对为什么 TypeScript 告诉你某些东西在运行时不是 undefined
感到困惑。