javascript - 仅使用方法名称的字符串调用对象的方法

标签 javascript json node.js validation

我正在尝试使用 express-validator 构建 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模块的导出来获取所有可用的验证函数名称。如果它们是独立的函数调用,我将了解如何仅使用其名称的字符串来调用该函数,如图 here 所示。和 here .

如何选择规则(notEmptyisEmail)(它们是 JSON 中的字符串),将它们转换为函数并将它们链接到 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()

关于javascript - 仅使用方法名称的字符串调用对象的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379306/

相关文章:

javascript - Vue.js 重复添加同一个类创建 "just updated"效果

javascript - 如何使用 Jquery 从中继器内的文本框中选择文本?

php - 使用 PHP 读取 JSON POST

node.js - 无法使用 StrongLoop Arc 连接到 StrongLoop PM

node.js - $过滤所有没有 "categories"的邮件

javascript - 在 JavaScript 中是否有类似 glob 但用于 URL 的东西?

javascript - 使用键盘未设置下拉模型数据和 ng-change 问题

json - golang json迭代不支持索引

javascript - 将文本框输出转换为用单引号而不是双引号括起来

node.js - Mongoose getter 和 setter 无法正常工作