我正在使用ExpressJs 4.16和Angular 4.我将ExpressJs的错误发送到我的Angular App。但我无法显示自定义消息。
server.js
app.use(function (err, req, res, next) {
res.status(err.status || 500);
// logger.log('error', err.message + " expected URL was " + req.url);
res.status(err.status).send(err.message);
})
MY-controller.js
function create(data) {
return new Promise((resolve, reject) => {
Department.findOne({ title: data.title })
.exec((err, doc) => {
if (err) return reject(err);
if (doc) {
return reject(new Error('This department is already exists. Please enter different department name.'))
} else {
data.createdBy = (data.createdBy) ? data.createdBy : '5a0436b0f578fa081dad72c1'
const department = new Department(data)
resolve(department.save());
}
})
})
}
department.service.ts
create(data) {
return this.http.post(BASE_URL + '/department/create', data)
.map(response => response as any[])
.catch((error: Response) => {
console.log('error',error) //==> Here I want my ExpressJs message i.e, "This department is already exists. Please enter different department name.".
return Observable.throw(error)
});
}
答案 0 :(得分:0)
您正在覆盖res.status
,
app.use(function (err, req, res, next) {
res.status(err.status || 500); // Set the status
res.status(err.status).send(err.message); // Overwrite it here
});
而不是那样做:
app.use(function (err, req, res, next) {
res.status(err.status || 500).send(err.message);
});