Как получить массив данных конкретного пользователя из ввода имени пользователя - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь вернуть данные конкретного пользователя из моей базы данных.Я звоню по всему массиву пользователей с помощью http.get, но у меня возникают проблемы с фильтрацией по имени пользователя, которое было изначально указано в поле ввода.

 login.component.ts
`this.loginService.loginUser().subscribe(data => {
  this.userUserName = data.find(users => users === this.userName);
  console.log(this.userUserName);`

 service.ts
`loginUser(): any {
  return this.http.get('http://localhost:3000/users/allusers');

  }`

ОШИБКА TypeError: data.find не являетсяфункция

1 Ответ

0 голосов
/ 23 сентября 2019

Чтобы устранить вашу ошибку и добиться этого без извлечения всех пользователей из БД, вот как я бы это сделал: service.ts

getAllUsers(): Observable<HttpResponse<User[]>> {
  return this.http.get<User[]>('http://localhost:3000/users');
}

getUser(login: string): Observable<HttpResponse<User>> {
  return this.http.get<User>(`http://localhost:3000/users/${login}`);
}

, а затем в component.ts

this.loginService.getUser(this.userName).subscribe((response:HttpResponse<User>) => {
  console.log(response.body.login);
});

Что касается серверной части, то вот пример с springboot

    @GetMapping("/users")
    public ResponseEntity<List<User>> getAllUsers() {
        // Here : access db and returns all users
        return this.userService.getAllUsers();
    }

     @GetMapping("/users/{login}")
    public ResponseEntity<User> getUserFromLogin(@PathVariable String login) {
        // Here : access db and find the row related to the expected login
        return this.userService.findByLogin(login);
    }

Примечание: обратите внимание, что я удалил allusers из URL-адреса и сопоставления, поскольку на стороне сервера возникла бы проблема как allusers будет считаться логином

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