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);
    }
  }