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