使用joi验证节点中发布的数据

问题描述

因此,我正在尝试验证我的帖子请求中的数据。 为此,我想使用joi,但似乎某处缺少了某些内容
这是我的发帖请求:

app.post('/new-comp',async (req: any,res: any) => {
  const validation = schemaComp.validate(req.body)
  // need to declare an if/else statement to manage the error
  // for Now,console.logs the info that data is not valid
  const data = await new CompetitionModel(req.body)
  console.log(validation)
  res.json(data)
})

正如我在评论中所述,我需要执行一些if / else语句来管理验证(因为它似乎是在验证数据,但不会停止发布)

但是,我不确定如何执行此操作,我尝试的所有方法都导致我出错。
我是这个的初学者,任何建议都将不胜感激。
另外,请在下面找到我的joi文件

export const Joi = require('joi')

export const schemaComp = Joi.object().keys({
  event_id: Joi.string().required(),compName: Joi.string().required(),place: Joi.string().required(),time: Joi.string().required(),subscriptions: [
    {
      id: Joi.string().required(),event_id: Joi.string().required(),name: Joi.string().required(),surname: Joi.string().required(),},],date: Joi.date().required(),cost: {
    currency: Joi.string().required(),amount: Joi.number().required(),})

谢谢

解决方法

像这样{ abortEarly: false }进行验证以引发所有验证错误

const { error } = schemaComp.validate(inputObj,{ abortEarly: false });
  if (error) {
    // handle your errors here
  }