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

Node.js 使用joi验证节点中发布的数据,node.js,validation,joi,Node.js,Validation,Joi,因此,我正在尝试验证post请求中的数据。 为此,我想使用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, cons

因此,我正在尝试验证post请求中的数据。 为此,我想使用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});
如果(错误){
//在这里处理您的错误
}

您可以尝试此
const result=Joi.validate(req.body,schemaComp);if(result.error){}