Поскольку я не могу протестировать этот код, я попытаюсь набросать возможное решение.
Во-первых, я начну с того, что, на мой взгляд, выбрасывает http
исключений изнутри. services - не лучшая практика, так как в идеале службы не должны знать об этом контексте. Конечно, есть исключения, ваше не похоже на одно из них (опять же - это мое мнение).
Что касается самого «решения», вы можете воспользоваться преимуществами Promise
s, например:
userService (это всего лишь фрагмент кода):
return new Promise((resolve, reject) => {
this.findOne(userProfile.nationalCode).then(() => {
if (res === undefined) {
const user = new User(userProfile.nationalCode, userProfile.email, userProfile.password, userProfile.firstName,
userProfile.surname, userProfile.fatherName, userProfile.birthCertNumber, userProfile.phoneNumber);
//const createdUser = new this.userModel(userProfile);
this.usersRepository.save(user);
resolve();
} else {
reject('some error');
}
})
...
Имея этот код в руке, вы можете сделать что-то вроде этого в своем контроллере:
@Post('/register')
async register(@Body() createUserDto: User): Promise<String> {
try {
await this.sejamService.registerUser(createUserDto);
} catch(e) {
throw new HttpException(....)
}
}
Опять же, приведенный выше код является просто примером. Делайте все, что вам нужно, чтобы сделать его более подходящим.