繁体   English   中英

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

[英]How to validate variable is actually a joi schema?

我正在尝试创建一个可重用的函数,您可以传入一个 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()
  }
}

Joi 似乎通过检查是否在架构原型链中找到了 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>

现在有一个专门的方法来检查提供的对象是否是架构

const Joi = require('@hapi/joi')

const schema = Joi.any();
Joi.isSchema(schema); // true

const notSchema = {}
Joi.isSchema(notSchema); // false

https://hapi.dev/module/joi/api/?v=17.1.1#isschemaschema-options

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM