зачем получать нулевые значения с помощью Effect (ngrx / store) - PullRequest
0 голосов
/ 30 апреля 2020

Проблема

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);
}

1 Ответ

0 голосов
/ 05 мая 2020

Часть интерфейса верна. Похоже, ваш сервер не возвращает созданного пользователя.

Я бы порекомендовал вам проверить сетевую активность в инструментах разработчика, когда был отправлен запрос на API_CREATE_USER_URL.

...