Извлечение массива данных из бэкэнда с Angular 9 - PullRequest
0 голосов
/ 24 апреля 2020

Мне нужно немного помочь с Angular (9). Я делаю GET-запрос для получения списка пользователей из серверной части:

    getUsers() {
    return this.http.get<User[]>(`${this._constant.baseAppUrl}/users/all`, )
        .pipe(map(user => {

            return user;
        }));
    }

Моя цель - получить массив объектов с типом пользовательской модели. Вместо этого я получаю объект.

enter image description here

Я не понимаю, почему. Моя IDE также показывает, что пользовательская переменная - это User [], но в браузере типом пользователя является «object».

Так как же я могу вернуть массив?

EDIT: This такое ответ от бэкэнда:

{
   "5ea04cfbcd595b393d78acbb": {
      "isAdmin": true,
      "role": "User",
      "status": "cEmail",
      "_id": "5ea04cfbcd595b393d78acbb",
      "name": "Test",
      "password": "$2b$10$re0gqblgXsfYus1mYA3yQ.Oiz4x81c3M2uxfE4tG6V7tNW1JMubXi",
      "email": "dr@rootix.de",
      "__v": 0
   },
   "5ea1f308fc8909618668384e": {
      "isAdmin": true,
      "role": "User",
      "status": "cEmail",
      "_id": "5ea1f308fc8909618668384e",
      "name": "Mathias Braun",
      "password": "$2b$10$zpQezfiG4xNkwOTgV4CLIeYU4MITVfL2VhlLC3rqCbjBGl5TIpavG",
      "email": "mb@rootix.de",
      "__v": 0
   }
}

1 Ответ

0 голосов
/ 24 апреля 2020

Сервер не возвращает массив в соответствии с предоставленным вами JSON. Но вы можете преобразовать объект в массив на стороне Angular следующим образом.

Измените свою функцию вызова Api

getUsers():Observable<User[]> {
   return this.http.get<User[]>(`${this._constant.baseAppUrl}/users/all`, )
    .pipe(map(response=> {
       if(response){
          return Object.values(response); //This will return the array of object values.
        }
        return []; // If response is null return empty array for safety.
    }));
}

Теперь ваша функция getUsers () будет массив пользовательского объекта.

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