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.