我对api的回复在前端

时间:2019-06-18 13:43:10

标签: mysql node.js angular

我从数据库mySql中获得了项目列表,还单击了“编辑”按钮。 当我单击“编辑”(按ID)时,我想查看数据填充的所有字段。 但是我只有在控制台中:undefined 如果我通过邮递员测试过我的api,那么效果很好。

这是我获取清单的方式。

{
    const id = this.actRoute.snapshot.paramMap.get('id');

    this.studentApi.GetStudent(id).subscribe((res: any) => {
      console.log(res.data);
      this.subjectArray = res.data;
      console.log(this.subjectArray);
      this.studentForm = this.fb.group({
        id: [res.id, [Validators.required]],
        domain_id: [res.domain_id, [Validators.required]],
        source: [res.source, [Validators.required]],
        destination: [res.destination]
      });
    });
  }

有我的api.service.ts

GetStudent(id): Observable<any> {
    const API_URL = `${this.endpoint}/read-student/${id}`;
    return this.http.get(API_URL, { headers: this.headers })
      .pipe(
        map((res: Response) => {
          return res || {};
        }),
        catchError(this.errorMgmt)
      );
  }

还有我的路线

studentRoute.get('/read-student/:id', (request, response) => {
  const id = request.params.id;
  con.query('SELECT * FROM students WHERE id = ?', id, (error, result) => {
      if (error) throw error;
      response.send(result);
  });
});

有来自“邮递员”的回复

[
    {
        "id": 5,
        "domain_id": 2,
        "source": "tester0700@test.pl",
        "destination": "testw@test.pl"
    }
]

1 个答案:

答案 0 :(得分:0)

响应似乎是一个包含对象的数组。

在这种情况下,无需使用res.data,因为这意味着返回的可观察值,res具有名为data的属性,并且您正在尝试访问该属性中的值。您可以简单地将res分配给subjectArray属性。我很确定会定义res

this.studentApi.GetStudent(id).subscribe((res: any) => {
  console.log(res);
  this.subjectArray = res;
  // handle the rest here.
});