Joi的Req.params验证

问题描述

所以我有一个应用程序,设法使用Joi验证了一些必需的身体数据。
但是,在我的一条路线中,我正在使用req.params,并且此数据现在直接在db中使用,这是一个很大的安全问题。
这是我的http文件中的所说路由:

// WORKS - posts a new subscription into a comp
app.put('/update/:event_id',async (req: any,res: any) => {
  const { error } = schemaSub.validate(req.body,{ abortEarly: false })
  if (error) {
    console.log(error)
    res.send('Something went wrong,try again!')
  } else {
    const subs = await CompetitionModel.findOneAndUpdate(
      { event_id: req.params.event_id },{ $push: { subscriptions: req.body } },)
    res.send(subs)
  }
})

在这里要做的是验证参数。
我有一个joi.ts文件以及下面的文件供参考:

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: Joi.array(),date: Joi.date().required(),cost: {
    currency: Joi.string().required(),amount: Joi.number().required(),},})

export const schemaSub = Joi.object().keys({
  id: Joi.string().required(),event_id: Joi.string().required(),name: Joi.string().required(),surname: Joi.string().required(),})

现在,我在以下链接中尝试了本教程:tuto,但无法将其应用于我的情况。
请记住,我非常初级。 谢谢,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)