Я пишу сервер API для примера Angular tour of heroes, используя nodejs, express и mongoose. Но не удается отобразить результат на веб-странице.
Вот шаг:
1. Я комментирую HttpClientInMemoryWebApiModule и InMemoryDataService в app.module.ts
Угловой код, который запрашивают герои:
getHeroes(): Observable<Hero[]> {
// TODO: send the message _after_ fetching the heroes
this.messageService.add('HeroService: fetched heroes');
//return of(HEROES); Use RxJs of()
return this.http.get<Hero[]>(this.heroesUrl) // Use HttpClient
.pipe(
tap(heroes => this.log('fetched heroes')),
catchError(this.handleError('getHeroes', []))
);
}
HeroesUrl - это:
private heroesUrl = 'http://localhost:3000/api/heroes';
Я изменяю hero.ts на:
export class Hero {
_id: string;
name: string;
__v: number;
}
Код API сервера для получения героев:
app.get('/api/heroes', function (req, res) {
console.log("Access get /api/heroes")
// Check name parameter
var heroName = req.query.name;
if (!heroName) {
// get Hero from Mongoose
Hero.find(function (err, hero) {
if (err) return console.error(err);
console.log(hero);
//res.send(hero);
res.json(hero);
})
} else {
// Find hero by name
Hero.find( { 'name' : { '$regex' : heroName, '$options' : 'i' } }, function (err,hero) {
if (err) return console.error(err);
console.log(hero);
//res.send(heroName);
res.json(hero);
})
//res.send(heroName);
}
})
Таким образом, если герой найден в базе данных, сервер API отправит обратно всех героев в формате JSON.
Проблема в том, что все отправленные герои не отображаются в модуле heroes.component. В чем проблема? Как я могу узнать, где проблема?
Я подтвердил, что сервер API использует Insomnia для создания запроса клиента к серверу, и подтвердил, что ответ находится в Json, как показано ниже:
[
{
"_id": "5bd6f24bbe204f39a0c0c3d4",
"name": "Monikart",
"__v": 0
},
{
"_id": "5bd7f5bbe03a2f2fe00d1fa9",
"name": "Conetto",
"__v": 0
},
{
"_id": "5bd7f7f4c418b5169c34c431",
"name": "Mosala",
"__v": 0
},
{
"_id": "5bd806ef9d47cc435c5ce6b6",
"name": "Josheppine",
"__v": 0
},
{
"_id": "5bd80ba16e7f950158dc4af7",
"name": "Hanoman",
"__v": 0
}
]