Javascript 调用对象';s方法,仅包含该方法的字符串';姓名

Javascript 调用对象';s方法,仅包含该方法的字符串';姓名,javascript,json,node.js,validation,Javascript,Json,Node.js,Validation,我正在尝试使用构建一个Node.js应用程序,这将允许我验证正文中的请求参数,如下所示- req.checkBody('email_id', 'Invalid email ID!').notEmpty().isEmail(); 现在,我正在尝试构建一个大型JSON配置文件,其中包含应用程序中每个路由的所有字段及其规则(例如,函数名,如isEmail())。我想编写一个中间件,它拦截每个请求,找出路由,从JSON文件中提取字段及其验证规则,然后运行这些规则。配置文件如下所示- { "VA

我正在尝试使用构建一个Node.js应用程序,这将允许我验证正文中的请求参数,如下所示-

req.checkBody('email_id', 'Invalid email ID!').notEmpty().isEmail();
现在,我正在尝试构建一个大型JSON配置文件,其中包含应用程序中每个路由的所有字段及其规则(例如,函数名,如
isEmail()
)。我想编写一个中间件,它拦截每个请求,找出路由,从JSON文件中提取字段及其验证规则,然后运行这些规则。配置文件如下所示-

{
    "VALIDATION_RULES": {
        "/createUser": {
            "RULES": {
                "email_id": {
                    "message": "Invalid email ID!",
                    "rules": ["notEmpty","isEmail"]
                }
            }
        }
    }
}
我可以查看express validator模块的导出,以获得所有可用的验证函数名称。如果它们是独立的函数调用,我将看到如何仅使用名称字符串调用函数,如图和所示


如何选择JSON中的字符串规则(
notEmpty
isEmail
),将它们转换为函数并将它们链接到
req.checkBody($field,$field.message)

您可以使用数组符号调用函数

这应该行得通

req.checkBody($field,$field.message)[“notEmpty”]()

req.checkBody($field,$field.message)[“notEmpty”].apply()


req.checkBody($field,$field.message)[“notEmpty”].call()

您可以使用数组符号来调用函数

这应该行得通

req.checkBody($field,$field.message)[“notEmpty”]()

req.checkBody($field,$field.message)[“notEmpty”].apply()


req.checkBody($field,$field.message)[“notEmpty”].call()

只需使用包含方法名称的变量引用函数即可:

var fields = {
  "email_id": {
    "message": "Invalid email ID!",
    "rules": ["notEmpty","isEmail"]
  }
};

// ...

var keys = Object.keys(fields);
for (var i = 0, len = keys.length, field, rules; i < len; ++i) {
  field = fields[keys[i]];
  rules = field.rules;
  var checker = req.checkBody(keys[i], field.message);
  for (var f = 0, lenf = rules.length; f < lenf; ++f)
    checker[rules[f]]();
}
var字段={
“电子邮件id”:{
“邮件”:“无效的电子邮件ID!”,
“规则”:[“notEmpty”,“isEmail”]
}
};
// ...
变量键=对象键(字段);
for(变量i=0,len=keys.length,field,rules;i
只需使用包含方法名称的变量引用函数即可:

var fields = {
  "email_id": {
    "message": "Invalid email ID!",
    "rules": ["notEmpty","isEmail"]
  }
};

// ...

var keys = Object.keys(fields);
for (var i = 0, len = keys.length, field, rules; i < len; ++i) {
  field = fields[keys[i]];
  rules = field.rules;
  var checker = req.checkBody(keys[i], field.message);
  for (var f = 0, lenf = rules.length; f < lenf; ++f)
    checker[rules[f]]();
}
var字段={
“电子邮件id”:{
“邮件”:“无效的电子邮件ID!”,
“规则”:[“notEmpty”,“isEmail”]
}
};
// ...
变量键=对象键(字段);
for(变量i=0,len=keys.length,field,rules;i