问题描述
我不确定是否曾经问过这种类型的问题,但是我找不到任何与此相关的信息。在我当前的项目中,我们使用Joi模式执行验证。我喜欢定义自定义架构并使用该架构对传入对象运行验证的功能。我有一项任务需要过滤对象属性。与_.pick
类似,但是属性很复杂,并且处理嵌套的objets和数组。我们已经有一个专为执行验证而设计的joi模式,但我正在考虑使用该模式来获取对象的特定属性,例如使用该模式过滤对象数据。像这样:
const Joi = require('joi');
const val = {
a: 'test-val1',b: 'test-val2'
}
const schema = Joi.object({
a: Joi.string()
});
// Now the below result have the object with both `a` and `b`
// properties but I want joi to strip the `b` property from the object
const result = schema.validate(value,{ allowUnkNown: true });
Joi的文档中没有提到这样的内容。我碰到了this(ajv)库,它可以满足我的要求,但是我想确定是否可以使用Joi
来实现。预先感谢。
解决方法
Joi提供了stripUnkown
属性,该属性只能用于获取架构中定义的字段。