【发布时间】:2019-08-24 14:51:58
【问题描述】:
我正在从 Angular 向 node/express API 发送 HTTP 请求。如何获取从 node/express API 发送的实际错误消息
我在 API 中抛出异常时处理得很好,但是当我尝试在 Angular 中读取消息时,我只得到我抛出的错误类型的名称。例如,如果我抛出 409,则 angular 收到的错误只是“冲突”并且不包含我发送的详细信息。请看我下面的代码。
我正在发送如下请求
register(user: UserAccount) {
return this.http
.post(`${config.apiUrl}/users/register`, user)
.pipe(
map((res: HttpResponse<Response>) => {
return res;
}))
.pipe(catchError(err => this.errorHandler.handleError(err)));
}
我的句柄错误如下:
handleError(error: HttpErrorResponse) {
console.log(error);
if (error) {
let errMessage = '';
try {
errMessage = error.message;
} catch (error) {
errMessage = error.statusText;
}
return throwError(errMessage || error || 'Server error');
}
return throwError(error.error || error || 'Server error');
}
这就是我在 Node/Express API 中发生错误时抛出错误的方式
registerUser (req, res) {
debug(chalk.blue(`*** insert user`))
userRepo
.create(req.body)
.then(user => {
debug(chalk.green(`*** Insert User ok!`))
res.status(200).json({
status: true,
error: null,
user: user
})
})
.catch(err => {
debug(chalk.red(`*** insertUser error: ${util.inspect(err)}`))
if (err['type'] && err['type'] === '409') {
res.status(409).json({
status: false,
error: err['message'],
user: null
})
} else {
res.status(400).json({
status: false,
error: err,
user: null
})
}
})
}
我希望能够接收带有错误信息的 json 对象,但是当我访问错误项时,我得到的只是,例如,在引发 409 的情况下,我只会得到“冲突”
【问题讨论】:
标签: node.js angular http express