[英]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.