javascript - res.json 没有向客户端发送我的错误消息?
问题描述
我有这个错误处理程序,可以根据发生的情况检索特定的错误消息。但问题是,当我使用 .catch() 运行我的错误处理函数时,如果我登录到节点控制台,它会起作用,但是当我尝试通过 res.json() 将它发送到客户端时,它只会发送状态代码,而不是我的错误处理程序的任何部分。
function errorHandler(error){
if (error.name === 'SequelizeValidationError') {
const errors = error.errors.map(err => err.message);
return errors;
} else {
throw error;
}
}
router.post('/create', async(req, res) => {
await Movie.create(req.body)
.then(() => res.json("Movie Created"))
.catch( err => res.status(401).json(errorHandler(err)) );
});
这是我的错误处理程序代码和我正在谈论的路线。它在节点控制台中工作,但就像我说的那样,它只将状态 401 代码发送给客户端,没有别的。我怎样才能将我的错误消息也发送给客户端?
谢谢!
解决方案
因为它不等待errorHandler的结果。让他们等着。尝试这个。
function errorHandler(error, cb){
if (error.name === 'SequelizeValidationError') {
const errors = error.errors.map(err => err.message);
cb(errors);
} else {
throw error;
}
}
router.post('/create', async(req, res) => {
await Movie.create(req.body)
.then(() => res.json("Movie Created"))
.catch( err => {
errorHandler(err, function(errors){
res.status(401).json(errors);
});
});
})
或者你可以返回一个 Promise 并在 errorHandler 上等待。
推荐阅读
- python - 如何过滤数据框中的多个列?
- sql - 根据两个条件创建新变量
- html - 如何在 HTML 中保留数字后留出空格?
- java - Intellij 将字符转换为实际符号
- pip - 错误:不能回滚枕头;未卸载
- react-native - 构建 ios 时找不到“RNNRootViewProtocol.h”文件
- python - 获取列表事件时如何在 Python 中获取 Google Calendar API status_code?
- python - 为随机森林分类器运行任何 BayesSearchCV 函数时出错
- sql-server - 日期维度表中的智能日期键与日期数据类型
- typescript - 带有 Yarn、TypeScript 和 React Native 的 Lerna:找不到模块“@project/common”或其对应的类型声明。ts(2307)