Я столкнулся со странной проблемой в моем угловом приложении:
Я создал компонент формы регистрации, который отправляет - используя сервисный метод - запрос HTTP post на сервер с регистрационными данными.
Если регистрация прошла успешно, возвращается строка, в противном случае возвращается неверный запрос.
ПРОБЛЕМА:
Теперь проблема в том, что даже если регистрация прошла нормально (моя таблица БД заполнена и пользователь создан), мой http-метод регистрации всегда проходит через раздел «error» метода http-запроса.
Ошибка просто говорит "[объект объекта]", и мой сервис возвращает строку "Учетная запись создана" в качестве ответа об успешном выполнении
Почему всегда выдает ошибку? Как я могу решить эту проблему?
Я поделюсь с вами своим кодом ниже:
КОМПОНЕНТ РЕГИСТРАЦИИ .ts - Метод регистрации
registerUser({ value, valid }: { value: UserRegistration, valid: boolean }) {
this.submitted = true;
this.isRequesting = true;
this.errors='';
if(valid)
{
this.userService.register(value.email,value.password,value.firstName,value.lastName,value.location)
.finally(() => this.isRequesting = false)
.subscribe(
result => {
console.log(result);
if (result) {
this.router.navigate(['/login']);
}},
errors => { console.error(errors); this.errors = errors });
}
}
СПОСОБ РЕГИСТРАЦИОННОЙ СЛУЖБЫ - http запрос
register(email: string, password: string, firstName: string, lastName: string, location: string): Observable<any> {
let body = JSON.stringify({ email, password, firstName, lastName, location });
let headers = new HttpHeaders().set('Content-Type', 'application/json')
return this.http.post(this.baseUrl + "/Accounts/NewUser", body, { headers })
.map(res => { return true })
.catch(error => Observable.throw(error)); //ALWAYS PASSES THROUGH HERE
}
МОЙ API
[HttpPost("NewUser")]
public async Task<IActionResult> NewUser([FromBody]RegistrationViewModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var userIdentity = _mapper.Map<AppUser>(model);
var result = await _userManager.CreateAsync(userIdentity, model.Password);
if (!result.Succeeded) return new BadRequestObjectResult(Errors.AddErrorsToModelState(result, ModelState));
await _appDbContext.Customers.AddAsync(new Customer { IdentityId = userIdentity.Id, Location = model.Location });
await _appDbContext.SaveChangesAsync();
return new OkObjectResult("Account created");
}