【发布时间】:2019-01-08 07:40:52
【问题描述】:
我有一类我在 JS 中创建的验证:
let test = new Validator(req.body);
现在我想测试一些东西,也许这个对象中的特定键是 2-5 字符长度,我会这样做:
let myBoolean = test.selector("firstName").minLength(2).maxLength(5);
// firstName is like: req.body.firstName
在课堂上如何做到这一点?
编辑
我做了这样的事情:
audit.isLength({selector: "from", gte: 2, lte: 35})
class Validator {
constructor(obj) {
this.obj = obj;
this.isValid = true;
}
isExists(sel) {
if (typeof this.obj[sel] === "undefined") return false;
return true;
}
isLength(info) {
let sel = this.obj[info.selector];
if (typeof sel === "undefined") return false;
if (info.gte) {
if (sel.length<info.gte) return false;
}
if (info.lte) {
if (sel.length>info.lte) return false;
}
if (info.gt) {
if (sel.length<=info.gt) return false;
}
if (info.lt) {
if (sel.length>=info.lt) return false;
}
return true;
}
}
【问题讨论】:
-
您的
selector方法需要返回具有minLength方法的something,而该方法又返回具有maxLength方法的something .selector是否是class的一部分并不重要。 -
请注意,您提出的 api 不起作用 - 大概 minlength 也应该返回布尔值?但它不能,因为它还应该返回你可以调用 maxlength 的东西。您将需要一个返回最终结果的终止调用。在你重新发明轮子之前,你可能想看看 github.com/rjperes/FluentValidationJS 这样的东西,如果只是为了获得一些灵感
标签: javascript class ecmascript-6