无法读取未定义的属性(读取 '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

entitlementsundefined 因为您没有获取与 Entitlement 的关系,默认情况下它是延迟加载的。

这样做:

const role = await this.findOne(id, { relations: ['entitlements'] });

顺便说一句,我建议您将该字段 entitlements: Entitlement[] 标记为可选。这样你就不会对为什么 TypeScript 告诉你某些东西在运行时不是 undefined 感到困惑。