express-validator isIn 的问题
Troubles with express-validator isIn
我开始了一个简单的井字游戏节点项目,以了解有关后端的更多信息。当我尝试对游戏创建请求进行验证时,问题出现了。它包含唯一选择的玩家符号,显然应该是“x”或“o”。不幸的是,请求不断通过验证,猫鼬每次都会抛出“ValidatorError:z
不是路径 symbol
的有效枚举值”
这是请求的正文:
{
"symbol": "z"
}
请求的路由代码如下:
GameRouter.post(
'/',
body('symbol')
.exists()
.notEmpty()
.isIn(['x', 'o']),
authMiddleware,
GameController.createGame
);
这是 express 中间件:
const app = express();
app.use(express.json());
app.use(cookieParser());
app.use(cors());
app.use('/auth', AuthRouter);
app.use('/users', UserRouter);
app.use('/game', GameRouter);
app.use(errorMiddleware);
解决方法很简单,我只是忘了在我的控制器函数中检查验证结果。我认为验证有效,但它是手动检查 if(!symbol)
:
async createGame(req, res, next) {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return next(ApiError.BadRequest('Validation error', errors.array()));
}
...
} catch (e) {
next(e);
}
}
我开始了一个简单的井字游戏节点项目,以了解有关后端的更多信息。当我尝试对游戏创建请求进行验证时,问题出现了。它包含唯一选择的玩家符号,显然应该是“x”或“o”。不幸的是,请求不断通过验证,猫鼬每次都会抛出“ValidatorError:z
不是路径 symbol
的有效枚举值”
这是请求的正文:
{
"symbol": "z"
}
请求的路由代码如下:
GameRouter.post(
'/',
body('symbol')
.exists()
.notEmpty()
.isIn(['x', 'o']),
authMiddleware,
GameController.createGame
);
这是 express 中间件:
const app = express();
app.use(express.json());
app.use(cookieParser());
app.use(cors());
app.use('/auth', AuthRouter);
app.use('/users', UserRouter);
app.use('/game', GameRouter);
app.use(errorMiddleware);
解决方法很简单,我只是忘了在我的控制器函数中检查验证结果。我认为验证有效,但它是手动检查 if(!symbol)
:
async createGame(req, res, next) {
try {
const errors = validationResult(req);
if (!errors.isEmpty()) {
return next(ApiError.BadRequest('Validation error', errors.array()));
}
...
} catch (e) {
next(e);
}
}