【问题标题】:Sanitization with JOI 10.2 (extend()?)使用 JOI 10.2 (extend()?) 进行消毒
【发布时间】:2020-11-13 09:52:57
【问题描述】:

JOI 10 用于验证针对 API 的调用。我现在想在验证 JSON 中包含的许多(但不是全部)字符串之前对其进行清理,即过滤掉某些字符。我知道这对于最近的 JOI 版本来说是一件容易的事,因为我可以使用 custom() 方法。不幸的是,更新 JOI 不是一种选择,因此我目前正在寻找一种优雅的方法来解决这个问题,最好使用 JOI 模式。

我发现有一个 extend() 函数允许我定义自定义类型/验证。但是,我不完全确定如何使用它以及将代码放在哪里。另外,我不确定它是否适合更改字符串。我可以使用 extend() 来实现这一点吗?如果没有,还有其他方法可以在 JOI 中执行此操作吗?

【问题讨论】:

    标签: sanitization joi hapi


    【解决方案1】:

    好的,其实很简单。

    const customJOI = JOI.extend({
        name: "sanitizedString",
        base: JOI.string(),
        pre(value: string, state: any, options: any) {
            return value.replace(/yourregex/, "");
        }
    });
    

    只需使用 customJOI 而不是 JOI,其中需要使用 .sanitizedString() 而不是 .string() 进行清理。

    【讨论】:

      猜你喜欢
      • 2012-04-23
      • 2012-02-19
      • 2020-05-11
      • 2020-08-04
      • 2018-10-18
      • 2018-09-30
      • 1970-01-01
      • 2020-03-01
      • 1970-01-01
      相关资源
      最近更新 更多