问题描述
因此,我正在尝试验证我的帖子请求中的数据。
为此,我想使用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
}