Javascript 当尝试获取多个图像时,Angular observable抛出状态代码为200的错误 问题描述

Javascript 当尝试获取多个图像时,Angular observable抛出状态代码为200的错误 问题描述,javascript,angular,postgresql,express,Javascript,Angular,Postgresql,Express,我在从postgreSQL数据库获取多个图像并在前端显示时遇到问题。图像作为二进制数据存储在postgreSQL中。如果我运行我的express代码,我会以json格式将图像数据作为缓冲区返回。 当我运行代码时,我会收到一个200状态代码,但是observable最终会执行handleError函数。 在这里您可以看到我的控制台--> 我的目标 我想从一个房子中获取多个图像,显示在我的前端模式页面上,这些图像存储在数据库中的一个单独的表中。通过此查询(“从housee.houses\u图像中选择

我在从postgreSQL数据库获取多个图像并在前端显示时遇到问题。图像作为二进制数据存储在postgreSQL中。如果我运行我的express代码,我会以json格式将图像数据作为缓冲区返回。 当我运行代码时,我会收到一个200状态代码,但是observable最终会执行handleError函数。 在这里您可以看到我的控制台-->

我的目标 我想从一个房子中获取多个图像,显示在我的前端模式页面上,这些图像存储在数据库中的一个单独的表中。通过此查询
(“从housee.houses\u图像中选择*,其中straatnaam=$1,straatnr=$2,postcode=$3”)
在我的postgreSQL数据库中,我可以得到正确的图像。在我得到所有的图像后,我想将它们显示在一个ion img标签中(来自ionic框架)

代码信息 因此,我使用的是一个postgresSQL数据库,其后端为javascript,使用express.js库,前端为Angular

这是我在postgreSQL中的表-->

在我的backend index.js文件中,我有以下代码

 app.get(
  "/getMarkerPhotos/:straatnaam/:straatnr/:postcode",
  function (req, res) {
    client.query(
      "select * from housee.houses_images where straatnaam = $1 AND straatnr = $2 AND postcode = $3",
      [req.params.straatnaam, req.params.straatnr, req.params.postcode],
      function (err, data) {
        if (err != null) {
          res.sendStatus(500);
        } else {
          res.sendStatus(200);
        }
      }
    );
  }
);
ngOnInit() {
    this.getMarkerPhotos();
  }

  getMarkerPhotos() {
    this.api.getMarkerPhotos(this.straatnaam, this.straatnr, this.postcode).subscribe(

      data => {
        console.log(data)
        //this.photos.push(data)
        //console.log(this.photos)
      },
      error => {
        console.log("Subscribe error: " + error)
      }
    );
  }
后端的调用正在工作,因为如果我在postman中运行它,它将以JSON格式返回我的数据-->

在前端,在我的api.service.ts文件中,我创建了这个函数

getMarkerPhotos(straatnaam: any, straatnr: any, postcode: any): Observable<any> {
    var result = this.http.get(this.url + '/getMarkerPhotos/' + straatnaam + '/' + straatnr + '/' + postcode)
    .pipe(
      catchError(this.handleError)
   );
    console.log(result)
    return result
  }

<--other code-->

private handleError(error: HttpErrorResponse) {
    if (error.error instanceof ErrorEvent) {
      console.log(error.error.message)

    } else {
      console.log(error.status)
    }
    return throwError(
      console.log('Something is wrong!'));
  };
我希望有人能帮我。 提前谢谢

更新的index.js
你认为你和这篇文章有同样的问题吗?“默认情况下,HttpClient尝试将HTTP响应的主体解析为JSON”。在您的后端index.js中,使用
res.status(500)进行尝试
res.status(200).send({})我试着按照他们在那篇文章上所做的来解决问题。但是,当我在url之后执行`{responseType:'text'}`时,我只是在文本中返回OK。后端调用中的数据不存在。如果我添加你的
res.status(200).send({})
我的后端崩溃并给我这个错误
\u http\u outgoing.js:558抛出新的ERR\u http\u HEADERS\u SENT('set')错误[ERR\u http\u HEADERS\u SENT]:发送到客户端后无法设置头
你还在使用
res.sendStatus(…)
?错误说明
发送到客户端后无法设置头文件
,因此不能同时使用这两个文件,您必须使用
res.status(…).send({})
res.sendStatus(…)
如果(err!=null){res status(500).发送({});}否则{res status(200).发送({})}
哦,它正在工作。事实上,我也发现你不能两者兼用。所以我只需要使用
res.send({data})
,现在我可以在前端从中获取所有图像!谢谢你的帮助:)
app.get(
  "/getMarkerPhotos/:straatnaam/:straatnr/:postcode",
  function (req, res) {
    client.query(
      "select * from housee.houses_images where straatnaam = $1 AND straatnr = $2 AND postcode = $3",
      [req.params.straatnaam, req.params.straatnr, req.params.postcode],
      function (err, data) {
        if (err != null) {
          res.sendStatus(500);
        } else {
          res.send({data});
        }
      }
    );
  }
);