使用 JOI 10.2 进行清理(扩展()?)

Sanitization with JOI 10.2 (extend()?)

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

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

好的,其实很简单。

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

并且在需要使用 .sanitizedString() 而不是 .string() 进行清理的地方使用 customJOI 而不是 JOI。