gpt4 book ai didi

node.js - Node JS 如何处理分布在不同文件中的验证脚本?

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:24 24 4
gpt4 key购买 nike

我有几个模块导出一个函数,当有效负载有效或无效时,该函数返回 true 或 false。我还有一个 JSON 格式的配置文件,其中我根据负载类型指定要使用的验证器脚本的名称:

[
{
"boardVersion": "1",
"availableInterfaces": [
{ "name": "digital", "validator": "digitalV1" },
{ "name": "analog", "validator": "analogV1" },
]
}
]

例如在 digitalv1.js 中我有类似的内容:

import validator from 'validator';

module.exports = (value) => {
validator.isInt(value, {min: 0, max: 3});
};

最后, Controller 从 ExpressJS 获取有效负载,并根据调用的端点决定使用哪个验证器。现在的问题是如何在 Controller 中加载验证器。

我想到了两种方法:

  1. 在 Controller 中,我需要每个验证器并将它们推送到键值数组(或对象)中,其中键是验证器的名称和验证器本身的值。
  2. 我可以将文件路径放入文件系统中,然后在需要时才需要该文件,而不是在 JSON 文件中定义验证器名称。

我有更好/更干净的方法来解决这个问题吗?请随意提出不同的架构。但其想法是为了代码整洁而将验证器分开。

最佳答案

您可以使用选项 1,但使用“桶模块”,该模块导入验证器,并将它们附加到数组或对象上。然后,任何需要验证器的模块都可以导入主模块,并使用提供的查找函数、索引或键来获取他们需要的验证器。

小心循环依赖:如果有它们,可以使用 module.exports.x = ,Node 将正确处理它们(注意:我不确定 ES6 模块是否有必要这样做,ES6 模块处理循环依赖的方式略有不同;只是需要警惕)。

由于创建此“桶模块”的知识已存在于您的 JSON 中,因此您可以在构建过程中监视 JSON 文件,并在任何文件关联发生更改时自动生成此桶模块,如果在某个文件路径中找不到指定的模块则抛出错误等。

关于node.js - Node JS 如何处理分布在不同文件中的验证脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50949728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com