代码之家  ›  专栏  ›  技术社区  ›  Catfish

如何验证变量实际上是一个joi模式?

  •  0
  • Catfish  · 技术社区  · 6 年前

    我正在尝试创建一个可重用的函数,您可以在joi模式中传递该函数并对其运行验证 req.body . 我想验证我的变量 schema 以确保它是有效的JOI模式。

    有办法吗?

    function validatePayload(schema) {
      return (req, res, next) => {
        const valid = joi.validate(req.body, schema)
        if (valid.error) {
          return handleErr(res, HttpStatus.BAD_REQUEST, valid.error.details[0].message)
        }
    
        return next()
      }
    }
    
    1 回复  |  直到 6 年前
        1
  •  3
  •   antonku    6 年前

    看来,乔伊 internally validates a schema 通过检查在模式原型链中是否找到joi构造函数,因此,您可能可以使用相同的验证:

    const mySchema = Joi.object().keys({
      username: Joi.string(),
      password: Joi.string()
    });
    
    const isValidSchema = mySchema instanceof Joi.constructor;
    
    console.log(isValidSchema);
    <script src="https://cdn.jsdelivr.net/npm/joi-browser@13.4.0/dist/joi-browser.min.js"></script>