Проблема
res = ноль в действии
Кажется, все работает, кроме получения ответа от Effect
. Я могу вернуть identity
из authcontroller
и успешно сохранить при создании пользователя. Поскольку я получаю нулевой ответ, я не могу делать дальнейшие шаги this.store.dispatch(new UserCreated({ user: res }));
. Что я пропустил?
http service
createUser(user: User): Observable<User> {
var userRoles = user.roles.map(x=>x.name);
const body = {
username: user.username,
password: user.password,
firstname: user.firstname,
lastname: user.lastname,
roles: userRoles,
email: user.email,
phonenumber:user.phonenumber,
};
const httpHeaders = new HttpHeaders();
httpHeaders.set("Content-Type", "application/json");
return this.http
.post<User>(API_CREATE_USER_URL, body,{headers:httpHeaders});
}
Эффект
@Effect()
createUser$ = this.actions$
.pipe(
ofType<UserOnServerCreated>(UserActionTypes.UserOnServerCreated),
mergeMap(( { payload } ) => {
debugger;
this.store.dispatch(this.showActionLoadingDistpatcher);
return this.auth.createUser(payload.user).pipe(
tap(res => {
debugger;
this.store.dispatch(new UserCreated({ user: res }));
})
);
}),
map(() => {
return this.hideActionLoadingDistpatcher;
}),
);
asp . net основной контроллер аккаунта
[HttpPost]
public async Task<IActionResult> Post(RegistrationViewModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var userIdentity = _mapper.Map<AppUser>(model);
//var userIdentity = new AppUser();
//userIdentity.Email = model.Email;
//userIdentity.UserName = model.UserName;
//var role = _roleManager.FindByNameAsync(model.RoleName).Result;
//await _userManager.AddToRoleAsync(userIdentity, role.Name);
var result = await _userManager.CreateAsync(userIdentity, model.Password);
if (!result.Succeeded)
{
return new BadRequestObjectResult(Error.AddErrorsToModelState(result, ModelState));
}
await _userManager.AddToRolesAsync(userIdentity, model.Roles);
await _appDbContext.SaveChangesAsync();
return Ok(userIdentity);
}