我使用nodejs,express和mongoose编写了一个用于Angular英雄之旅示例的API服务器。但是无法将结果显示在网页上。
这是步骤: 1.我在app.module.ts中注释了HttpClientInMemoryWebApiModule和InMemoryDataService
要求英雄的角码:
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模块中显示。有什么问题?如何找出问题所在?
我已确认使用Insomnia的API服务器来创建对服务器的客户端请求,并已确认答复在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
}
]