我正在从角度向节点/ 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的情况,我只会收到'Conflict'< / p>
答案 0 :(得分:1)
这样做的原因是,当您捕获到错误并且状态为409时,将返回`err ['message']而不是'err'。
所以代替:
res.status(409).json({
status: false,
error: err['message'],
user: null
})
您应该返回:
res.status(409).json({
status: false,
error: err,
user: null
})
这实际上是在出现400错误的情况下要做的事情!