【发布时间】:2021-10-25 10:09:31
【问题描述】:
我正在向 api 端点发出 get 请求,它发送一个 json 对象,我想要来自数据属性的课程数组。但我不能,不知道我做错了什么,应该将 json 转换为对象…… 错误是 “对象”类型上不存在属性“键”。
这里的key应该等于“data”,data是json的属性。
我的组件是
import { HttpClient } from '@angular/common/http';
import { Component, OnInit } from '@angular/core';
import { pipe } from 'rxjs';
import { map } from 'rxjs/operators'
import { C } from './c.model';
@Component({
selector: 'app-course',
templateUrl: './course.component.html',
styleUrls: ['./course.component.css']
})
export class CourseComponent implements OnInit {
courses :C[]=[];
constructor(private http:HttpClient) { }
ngOnInit(): void {
this.fetchCourses();
}
private fetchCourses() {
this.http.get('http://127.0.0.1:3000/api/courses/')
.pipe(map( responseData =>{
const coursesArray = [];
for(const key in responseData){
if(responseData.hasOwnProperty(key)){
if(key === "data")
{
coursesArray.push(...(responseData.key.courses))
}
}
}
return coursesArray
}))
.subscribe(responsec=>{
this.courses=responsec;
})
}
}
来自api的json
{
"status": "sucess",
"numberOFResults": 5,
"data": {
"courses": [
{
"images": [],
"tutors": [],
"_id": "611c8899e135aa2c9cd39796",
},
{
"images": [],
"tutors": [],
"_id": "611c8899e135aa2c9cd39794",
"name": "arduno uno",
},
{
"images": [],
"tutors": [],
"_id": "611c8899e135aa2c9cd39795",
"name": "c/c++",
"duration": 8,
},
{
"images": [],
"tutors": [],
"_id": "611c8899e135aa2c9cd39798",
"name": "ms office",
"duration": 4,
},
{
"images": [],
"tutors": [],
"_id": "611c8899e135aa2c9cd39797",
"name": "web development",
}
]
}
}
【问题讨论】:
-
从您的回复结构中,您可以直接访问
responseData.data.courses等课程。
标签: angular api get xmlhttprequest