Jede Hilfe wäre dankbar. Vielen Dank im Voraus.
Auth-Microservice-Dienst sendet Ereignis an Benutzer-Microservice:
Es wird zunächst gefragt, ob die E-Mail-Adresse des Benutzers vorhanden ist und wirft einen Fehler. Ich schaffe es nicht, dass dieser Fehler in der Antwort auftaucht.
Code: Select all
public async register({
dto,
}: {
dto: UserRequestDto;
}): Promise {
return new Promise((resolve, reject) => {
this.usersController
.send(FIND_USER_BY_EMAIL, dto.email)
.pipe(
switchMap((res) => {
if (res === null) {
return this.usersController.send(CREATE_USER, dto);
}
}),
)
.subscribe({
next: (res) => {
resolve(res);
},
error: (e) => {
reject(e);
},
});
});
}
Code: Select all
@MessagePattern(FIND_USER_BY_EMAIL)
@Serialize(UserResponseDto)
public async findByEmail(@Payload() email: string): Promise {
try {
return await this.usersService.findByEmail({ email: email });
} catch (e) {
throw e;
}
}
Code: Select all
public async findByEmail({ email }: { email: string }): Promise {
try {
return await this.usersRepository.findByEmail({ email: email });
} catch (e) {
throw e;
}
}
Hier gebe ich den Fehler aus. Dieser Fehler ist in der resultierenden Observable nicht zu sehen, wo all dies beginnt. Die Fehlermethode im Observable weiß, dass ein Fehler aufgetreten ist, gibt mir aber ein leeres Objekt {}
Code: Select all
public async findByEmail({ email }: { email: string }): Promise {
const repository = this.getRepository(UserEntity);
try {
const user = await repository.findOneBy({ email: email });
if (user) {
throw new UnprocessableEntityException("Email already exists.");
}
return user;
} catch (e) {
throw e;
}
}