CRUD Service - Создать - PullRequest
       2

CRUD Service - Создать

0 голосов
/ 30 августа 2018

В настоящее время я разрабатываю свое первое JS-приложение Angular (Version 6) с Spring Boot Backend. Я уже получил работу, чтобы иметь обзор пользователя, детализацию и страницу редактирования. Я могу отредактировать существующую запись пользователя, но не могу сохранить нового пользователя.

Я получил userService, который управляет всеми взаимодействиями с Backend:

const httpOptions = {
 headers: new HttpHeaders({'Content-Type': 'application/json'})
};

@Injectable({
  providedIn: 'root'
})

export class UserService {

private apiUrl = 'http://localhost:8080/users';

constructor(private http: HttpClient,
            private messageService: MessageService) {
}

getUsers(): Observable<User[]> {
  return this.http.get<User[]>(this.apiUrl)
    .pipe(
      tap(user => this.log('fetched users')),
      catchError(this.handleError('getUsers', []))
    );
}

getUser(id: number): Observable<User> {
  const url = `${this.apiUrl}/${id}`;
  return this.http.get<User>(url).pipe(
    tap(_ => this.log(`fetched user id=${id}`)),
    catchError(this.handleError<User>(`getUser id=${id}`))
  );
}


updateUser(user: User): Observable<any> {
  const url = `${this.apiUrl}/${user.id}`;
  return this.http.put(url, user, httpOptions).pipe(
    tap(_ => this.log(`updated user id=${user.id}`)),
    catchError(this.handleError<any>('updateUser'))
  );
}

deleteUser(user: User): Observable<any> {
  const url = `${this.apiUrl}/${user.id}`;
  return this.http.delete(url, httpOptions).pipe(
    tap(_ => this.log(`delete user id=${user.id}`)),
    catchError(this.handleError<any>('deleteUser'))
  );
}

saveUser(user: User): Observable<any> {
  const url = `${this.apiUrl}/create`;
  this.log("user create with " + user.username +" and "+user.email);
  return this.http.put(url, user, httpOptions).pipe(
    tap(_ => this.log(`save user`)),
    catchError(this.handleError<any>('updateUser'))
  );
}

/**
 * Handle Http operation that failed.
 * Let the app continue.
 * @param operation - name of the operation that failed
 * @param result - optional value to return as the observable result
 */
private handleError<T>(operation = 'operation', result?: T) {
  return (error: any): Observable<T> => {

    console.error(error); // log to console instead

    this.log(`${operation} failed: ${error.message}`);

    // Let the app keep running by returning an empty result.
    return of(result as T);
  };
}

/** Log a HeroService message with the MessageService */
private log(message: string) {
  this.messageService.add(`UserService: ${message}`);
}
}

Если я нажму на «Сохранить», то увижу вывод журнала, который я «создаю пользователем с помощью foo и foo@baar.com», но больше ничего не вижу. Нет запроса на отправку на сервер, но также не было сообщений об ошибках.

С уважением, Yannic

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...