[英]How to perform Joi Validations for a TypeScript Class?
我能够对节点中的函数表达式执行 Joi 验证,如下所示
export var shippingInfo = Joi.object().keys({
expectedDeliveryDate:Joi.date().required(),
isRegisteredCompanyAddress:Joi.number().required(),
addressLine:Joi.string(),
country:Joi.string(),
state:Joi.string(),
city:Joi.string(),
zipcode:Joi.string()
});
但问题是,我最近开始研究打字稿。 所以在这里,我有几个类,我应该像在上面的函数表达式中那样执行 Joi 验证。 即我想验证下面的类
export class ShippingInfo {
expectedDeliveryDate: Date,
isRegisteredCompanyAddress: number,
addressLine:string,
country:string,
state:string,
city:string,
zipcode:string
}
我应该如何对上述课程进行验证。 应该对类级别还是对象级别进行验证? 如何?
您可以将此项目用作参考。 tsdv-joi
// ...imports...
registerJoi(Joi);
class MyClass {
@Max(5)
@Min(2)
@StringSchema
public myProperty : string;
}
let instance = new MyClass();
instance.myProperty = "a";
const validator = new Validator();
var result = validator.validate(instance);
console.log(result); // outputs the Joi returned value
如果你需要 npm 包,那么你可以使用这个包装器gearworks
您可以使用class-from-any 、 tsdv-joi 、 class-validator或class-transformer 。
来自任何类的示例,我们在其中获取、转换和验证 JSON 数据作为打字稿类:
import { FromAny, GetFrom, Validate, isString, notEmpty } from "class-from-any";
const worldJSONData = `{"name": "Earth"}`;
class World extends FromAny {
@GetFrom("name") @Validate(isString, notEmpty) title: string;
}
const world = new World().from(
JSON.parse(worldJSONData) as Record<string, unknown>
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.