I cannot get full model from database TypeORM

Viewed 32

My My problem is that in the database in the linked tables, the userId fields are set to the integer type, but my userId stores the string type.

My GET request:

{
    "userId": "8bbce700-ae67-430a-9499-6c4545624f86"
}

Response:

   "data": {
    "id": "8bbce700-ae67-430a-9499-6c4575624f86",
    "email": "bogdan@mail.ru",
    "name": "Danila1",
    "password": "12345qwerty",
    "sounds_effects": true,
    "auto_play_voice": true,
    "auto_continue": true,
    "languages": [
        {
            "id": 1
        }
    ]
},
"message": "OK" }

where "id" in "languages" is the Primary Key

My service:

class LanguageService {
  private userRepository = AppDataSource.getRepository(UserEntity);

  public async getLanguages(languageData: LanguageDto) {
    if (isEmpty(languageData)) throw new HttpException(400, 'Your data is empty');
    const findUser = await this.userRepository.findOne({
      where: { id: languageData.userId },
      relations: {
        languages: true,
      }
    });
    if (!findUser) throw new HttpException(409, "You're not user1");
    return findUser
  }
}

UserEntity:

    @Entity('users')
    export class UserEntity extends BaseEntity {
      @PrimaryGeneratedColumn('uuid')
      id: string;

      @Index('email_index')
      @Column({
        unique: true,
      })
      email: string;

     //some user data

      @OneToMany(() => VerificationTokenEntity,
        verificationToken => verificationToken.user)
      verificationTokens: VerificationTokenEntity[];

      @OneToMany(() => UserLanguageEntity,
        (languages) => languages.userId)
      languages: UserLanguageEntity[];
    }

UserLanguageEntity:

@Entity('userLanguage')
export class UserLanguageEntity extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => UserEntity,
    (user) => user.languages)
  @JoinColumn()
  userId: UserEntity;

  @OneToOne(() => LanguageEntity,
    (language) => language.userLanguage)
  @JoinColumn({
    name: 'languageId',
  })
  languageId: LanguageEntity;

  @OneToMany( () => UserLanguageProgressEntity,
    (user) => user.userId)
  userLanguageProgress: UserLanguageProgressEntity[];
}

LanguageEntity:

@Entity('languages')
export class LanguageEntity extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @OneToOne(() => UserLanguageEntity,
    (userLanguage) => userLanguage.languageId)
  @JoinColumn()
  userLanguage: UserLanguageEntity;
}

UserLanguageProgressEntity:

@Entity('userLanguageProgress')
export class UserLanguageProgressEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne(() => UserLanguageEntity,
    (user) => user.userLanguageProgress)
  @JoinColumn({
    name: 'userId',
  })
  userId: UserLanguageEntity;
}

I want to get all user data: user data, languages studied and progress in them.

If you want you can look at my database schema.

0 Answers
Related