如何从 Angular 中的 php API (laravel lumen) 获取数据数组

问题描述 投票:0回答:1

我陷入了困境,因为这是我第一次使用 Angular,我可能不理解一些基础知识。

我制作了一个 PHP API,它从 MySQL 数据库返回数据,并使用 HttpClient 以角度方式获取它们。

对数据库的调用是:

public function showOneCoursBy($id){
    $results = DB::select("select * from cours where id_cours = ".$id);
    return $results;
}

访问API页面我得到:

[{"id_cours":1,"id_exercice":1,"titre":"XXX","description":"XXX","contenu":"XXX","mediaPath":"XXX","dateDebut" :"0000-00-00","dateFin":"0000-00-00"}]

看来是对的。

在 Angular 中,我使用

获取数据
  constructor(
    private firestore: AngularFirestore,
    private http: HttpClient,
    public db: AngularFirestore
  ) {
    this.http.get('http://localhost:3000/cours/').
    toPromise().then(data => {
      console.log(Object.keys(data).map(key => ({type: key, value: data[key]})));
      }
    );
  }

在服务中,

console.log
一定会回来

(2) […]​
0: {…}​​
type: "0"​​
value: Object { id_cours: 1, id_exercice: 1, titre: "Premier Cours", … }
<prototype>: Object { … }
1: {…}​
type: "1"​
value: Object { id_cours: 2, id_exercice: 2, titre: "Cours n°2", … }
<prototype>: Object { … }
length: 2​
<prototype>: [

但是我怎样才能只获取其中一个元素作为数组呢?或者只访问一处房产?

php angular lumen angular-httpclient
1个回答
1
投票

您可以简单地为对象声明一个接口

export interface Exercice { 
  id_cours: number;
  id_exercice: number;
  titre: string;
  description: string;
  contenu: string;
  mediaPath: string;
  dateDebut: string;
  dateFin: string
}

您可以通过输入您的答案作为 Exercice 来访问数据

 this.http.get('http://localhost:3000/cours/')
   .pipe(take(1))
   .subscrible((response: Exercice[]) => {
     response.forEach(exercice => console.log(exercice.titre));
   });
© www.soinside.com 2019 - 2024. All rights reserved.